我有一个实现IValueConverter接口的转换器。这是转换方法:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return String.Concat(@"..\Images\myFolder\", System.Convert.ToString(value), ".png");
}
这是我的xaml代码,在资源中:
<converters:ImageSourceConverter x:Key="ImageSourceConverter"/>
以下是我如何使用它:
<Image Source="{Binding Path=myCategoryId, Converter={StaticResource ImageSourceConverter}}" Width="150" Height="150"></Image>
我遇到的问题是:我的解决方案中有几个包含图像的文件夹。图像的路径就是这个:
..\Images\myFolder\1.png
..\Images\myFolderJohn\2.png
..\Images\myFolderJack\3.png
其中文件的名称是id。 我在Convert方法中的代码仅适用于myFolder中的图像。文件夹的名称取决于放置图像的用户控件。所以,它应该是这样的:
if (userControl == "John")
return String.Concat(@"..\Images\myFolderJohn\", System.Convert.ToString(value), ".png");
if (userControl == "Jack")
return String.Concat(@"..\Images\myFolderJack\", System.Convert.ToString(value), ".png");
如何在Convert方法中了解显示图像的用户控件?
答案 0 :(得分:1)
您可以使用转换器参数,如下所示:
在&#34; John&#34;用户控制:
<Image Source="{Binding Path=myCategoryId, Converter={StaticResource ImageSourceConverter}, ConverterParameter=John}" Width="150" Height="150"></Image>
并且在&#34; Jack&#34;用户控制:
<Image Source="{Binding Path=myCategoryId, Converter={StaticResource ImageSourceConverter}, ConverterParameter=Jack}" Width="150" Height="150"></Image>
答案 1 :(得分:1)
在绑定中使用ConverterParameter
。
约翰UseControl
中的xaml将是,
<Image Source="{Binding Path=RentalTypeId, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Converter={StaticResource ConvImageSource}, ConverterParameter=John}"/>
在转换器类中使用像这样的参数
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return String.Concat(@"..\Images\myFolder", System.Convert.ToString(parameter), "\\", System.Convert.ToString(value), ".png");
}