Biasanya, Anda akan menggunakan kontrol tata letak bawaan yang sesuai untuk skenario Anda (mis. Gunakan kisi sebagai orangtua jika Anda ingin menskalakan relatif terhadap induk). Jika Anda ingin melakukannya dengan elemen induk sewenang-wenang, Anda bisa membuat ValueConverter melakukannya, tetapi mungkin tidak akan sebersih yang Anda inginkan. Namun, jika Anda benar-benar membutuhkannya, Anda dapat melakukan sesuatu seperti ini:
public class PercentageConverter : IValueConverter
{
public object Convert(object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
return System.Convert.ToDouble(value) *
System.Convert.ToDouble(parameter);
}
public object ConvertBack(object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Yang dapat digunakan seperti ini, untuk mendapatkan kotak teks anak 10% dari lebar kanvas induknya:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<local:PercentageConverter x:Key="PercentageConverter"/>
</Window.Resources>
<Canvas x:Name="canvas">
<TextBlock Text="Hello"
Background="Red"
Width="{Binding
Converter={StaticResource PercentageConverter},
ElementName=canvas,
Path=ActualWidth,
ConverterParameter=0.1}"/>
</Canvas>
</Window>