Genellikle, senaryonuza uygun yerleşik bir yerleşim denetimi kullanırsınız (örneğin, üst öğeye göre ölçeklendirme istiyorsanız bir ızgarayı üst öğe olarak kullanın). Bunu rasgele bir üst öğe ile yapmak istiyorsanız, bunu yapmak için bir ValueConverter oluşturabilirsiniz, ancak muhtemelen istediğiniz kadar temiz olmayacaktır. Ancak, kesinlikle ihtiyacınız varsa, böyle bir şey yapabilirsiniz:
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();
}
}
Bir alt metin kutusunu üst tuvalinin genişliğinin% 10'unu elde etmek için böyle kullanılabilir:
<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>