绑定一个枚举

时间:2013-12-25 13:32:18

标签: c# wpf mvvm binding enums

我有一个枚举,每个值代表一个图像,例如:

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}}"/>

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

答案

如果ViewModel属性是枚举,那就是这样做的方法。它看起来像这样:

<!-- DataContext of the Image has to be the ViewModel -->
<Image Source="{Binding CowImage, Converter={StaticResource AnimalImagesImageBitmapSource}}"/>

替代

您也可以这样做,以便您的ViewModel属性CowImage实际返回图像的URIImageSource,这样您就不需要转换器,它看起来像“清洁器”。

像这样:

<强> 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}}"/>