C# 基于绑定值更改元素属性
我需要根据绑定对象中的值更改图像元素的属性 我有一个图像元素:C# 基于绑定值更改元素属性,c#,xaml,uwp,C#,Xaml,Uwp,我需要根据绑定对象中的值更改图像元素的属性 我有一个图像元素: <Image Source="{Binding Thing.Url}" Stretch="UniformToFill" HorizontalAlignment="Left"/> 如果Thing.OtherProperty=true,那么我想向Image元素添加HorizontalAlignment=“Center” 注意,Image元素位于一个DataTemplate中,该DataTemplate在应用程序中的各个
<Image Source="{Binding Thing.Url}" Stretch="UniformToFill" HorizontalAlignment="Left"/>
如果Thing.OtherProperty=true
,那么我想向Image元素添加HorizontalAlignment=“Center”
注意,Image元素位于一个DataTemplate中,该DataTemplate在应用程序中的各个位置使用
实现这一点的最佳方法是什么?这是您将使用 在本例中,您希望基于布尔值更改
水平对齐
属性。
首先需要编写一个实现IValueConverter
的类,在该类中编写转换逻辑:
public class AlignmentConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if ((bool)value)
return Windows.UI.Xaml.HorizontalAlignment.Center;
return Windows.UI.Xaml.HorizontalAlignment.Left;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
*您可能需要更好地处理错误,以防将其绑定到非布尔属性
要使用它,您需要在页面顶部导入Converter命名空间
xmlns:converters="using:*yournamespace*"
…将转换器声明为资源:
<converters:AlignmentConverter x:Key="HorizontalAlignmentConverter"/>
。。。并将其用作绑定中的参数
<Image Source="{Binding Thing.Url}" Stretch="UniformToFill" HorizontalAlignment="{Binding Thing.OtherProperty, Converter={StaticResource HorizontalAlignmentConverter}"/>