我需要根据绑定对象中的值更改Image元素的属性.
我有一个图像元素:
<Image Source="{Binding Thing.Url}" Stretch="UniformToFill" HorizontalAlignment="Left"/>
如果Thing.OtherProperty = true,那么我想将HorizontalAlignment =“ Center”添加到Image元素.
请注意,Image元素位于DataTemplate中,该数据模板可在应用程序的各个位置使用.
做到这一点的最佳方法是什么?
解决方法:
这是您要使用Binding Converter的地方
在您的情况下,您想基于布尔值更改HorizontalAlignment属性.
首先,您需要编写一个实现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}"/>