c#-根据绑定值更改元素属性

我需要根据绑定对象中的值更改Image元素的属性.

我有一个图像元素:

<Image Source="{Binding Thing.Url}" Stretch="UniformToFill" HorizontalAlignment="Left"/>

如果Thing.OtherProperty = true,那么我想将Horizo​​ntalAlignment =“ Center”添加到Image元素.

请注意,Image元素位于DataTemplate中,该数据模板可在应用程序的各个位置使用.

做到这一点的最佳方法是什么?

解决方法:

这是您要使用Binding Converter的地方

在您的情况下,您想基于布尔值更改Horizo​​ntalAlignment属性.
首先,您需要编写一个实现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();
    }
}

*如果您将其绑定到非布尔值的属性,则可能需要更好地处理错误

要使用此功能,您需要在页面顶部导入您的掩护者名称空间

xmlns:converters="using:*yournamespace*"

…将转换器声明为资源:

<converters:AlignmentConverter x:Key="HorizontalAlignmentConverter"/>

…并将其用作绑定中的参数

<Image Source="{Binding Thing.Url}" Stretch="UniformToFill" HorizontalAlignment="{Binding Thing.OtherProperty, Converter={StaticResource HorizontalAlignmentConverter}"/>
上一篇:C#-Windows BluetoothLeAdvertisement不包含Android设备广播的服务uuid


下一篇:通用应用程序中未处理的异常处理程序中的异步方法