我需要根据绑定对象中的值更改Image元素的属性。
我有一个图片元素:
>>> import os
>>> paths = "/usr/local/sa/ftp/collectorftp/AVideoP05D20160608000020E310.txt.gz, /usr/local/sa/ftp/collectorftp/AHTTPP05D20160608000008E307.txt.gz, /usr/local/sa/ftp/collectorftp/AVideoP05D20160608000122E322.txt.gz".split(", ")
>>> map(os.path.basename, paths)
['AVideoP05D20160608000020E310.txt.gz', 'AHTTPP05D20160608000008E307.txt.gz', 'AVideoP05D20160608000122E322.txt.gz']
如果<Image Source="{Binding Thing.Url}" Stretch="UniformToFill" HorizontalAlignment="Left"/>
,那么我想将Thing.OtherProperty = true
添加到Image元素。
注意,Image元素位于DataTemplate中,用于应用程序的各个位置。
实现这一目标的最佳方式是什么?
答案 0 :(得分:4)
这是您使用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}"/>