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}"/>