我有一个枚举,每个值代表一个图像,例如:
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);
}
我正在使用带有 MVVM 的 WPF;现在,我想将图像添加到我的 View 中。使用 Cow
枚举,我想要牛图像。我知道我可以向我的 ViewModel 添加一个属性并像这样调用它:
public AnimalImages CowImage
{
return AnimalImages.Cow;
}
然后将其绑定(bind)到我的 UI。但是,我认为有更好的方法可以做到这一点。类似于以下内容(当然不起作用):
<Image Source="{x:Static images:AnimalImages.Cow}, Converter={StaticResource AnimalImagesImageBitmapSource}}"/>
有什么建议吗?
最佳答案
回答
如果 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}"/>
关于c# - 绑定(bind)一个枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20773317/