找到图像来自Converter的userControl

时间:2014-07-09 11:17:32

标签: wpf mvvm converter ivalueconverter

我有一个实现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方法中了解显示图像的用户控件?

2 个答案:

答案 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");
}