我有一个枚举,每个值代表一个图像,例如:
public enum AnimalImages
{
Cow,
Cat,
Dog
}
我还有一个转换器,它接受枚举并返回一个ImageSource:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return ResourceManager.Instance.GetImageFromEnum((AnimalImages)value);
}
我在WPVM中使用WPF;现在,我想在我的视图中添加一个图像。使用Cow
枚举,我想要牛图像。我知道我可以向我的ViewModel添加一个属性并像这样调用它:
public AnimalImages CowImage
{
return AnimalImages.Cow;
}
然后将其绑定到我的UI。但是,我认为有更好的方法可以做到这一点。类似下面的东西(当然不起作用):
<Image Source="{x:Static images:AnimalImages.Cow}, Converter={StaticResource AnimalImagesImageBitmapSource}}"/>
有什么建议吗?
答案 0 :(得分:2)
如果ViewModel属性是枚举,那就是这样做的方法。它看起来像这样:
<!-- DataContext of the Image has to be the ViewModel -->
<Image Source="{Binding CowImage, Converter={StaticResource AnimalImagesImageBitmapSource}}"/>
您也可以这样做,以便您的ViewModel属性CowImage
实际返回图像的URI
或ImageSource
,这样您就不需要转换器,它看起来像“清洁器”。
像这样:
<强> ViewModel.cs 强>
public ImageSource CowImage
{
get
{
return ResourceManager.Instance.GetImageFromEnum(AnimalImages.Cow);
}
}
Xaml文件
<Image Source="{Binding CowImage}"/>
答案 1 :(得分:0)
你快到了。只需要使用Binding and pass static value as Source
。
<Image Source="{Binding Source={x:Static images:AnimalImages.Cow},
Converter={StaticResource AnimalImagesImageBitmapSource}}"/>