我需要设置cotrol的属性,该属性是其父级的另一个属性的依赖。 我试着通过一个例子更好地解释我的问题。我想创建一个切换开关按钮,动画一个"滑块"元素进入它。当用户控件插入应用程序窗口时,将定义切换开关的尺寸。我希望滑块的尺寸比开关盒大一半。因此,如果控件大100,滑块应该是50,或者如果大250,滑块应该是125.然后我需要调用函数或类似的东西:
<UserControl>
<Border Name="switchCase" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Border Name="slider" Width="**Container.Width/2**" ></Border>
</Border>
</UserControl>
有没有可能实现这个目标? 提前致谢 保罗
答案 0 :(得分:3)
开箱即用,XAML不支持。您只能bind to Properties。
答案 1 :(得分:3)
是的,您需要使用转换器进行数据绑定,例如以下示例
xmlns:conv="clr-namespace:MyConverters.Converters"
.......
<UserControl.Resources>
<conv:WidthConvertercs x:Key="widthConv"></conv:WidthConvertercs>
</UserControl.Resources>
<Border Name="switchCase" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
<Border Name="slider" Width="{Binding ElementName=switchCase, Path=ActualWidth, Converter={StaticResource widthConv}}" Background="DarkMagenta"></Border>
</Border>
您的转换器类将是
[ValueConversion(typeof(double), typeof(double))]
class WidthConvertercs : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double withPar = (double)value;
return withPar/2.0;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
我希望这会有所帮助