我有一个枚举属性的模型(在这种情况下,与出口管制条例有关)。向用户显示值时,我想显示相应的字符串。有时这是在ComboBox中(用户可以选择一个值),有时它在TextBlock中(它是只读的)。将textblock绑定到XAML中的键的字典值?
例如:对于ExportRegulationType.EAR
,我想显示"EAR"
,而对于ExportRegulationType.DoNotExport
,我想显示"Do Not Export"
。请注意,我没有任何语言本地化的需求,但我认识到这个问题...
目前,在我的ViewModel,我有一个属性返回一个字符串基于当前的枚举值,还有另一个属性返回Dictionary<ExportRegulationType, string>
。对于组合框,我可以将ItemsSource
绑定到字典属性,对于TextBlocks,我可以绑定到字符串属性。这有效,但有点笨拙。
两个问题:
1)在我看来,我应该能够申报词典(与键和值),如XAML(可能在App.xaml中)的静态资源,并利用它来进行ComboBox版本的ItemsSource。但是,我无法弄清楚如何声明和引用这样的事情。我怎样才能做到这一点?
2)假设上面已经存在,我想我也可以设置与textblock的绑定,所以根据enum属性,它会查找字典中的字符串。
我看到以下有关static或dynamic枚举值的问题。首先是不够的,第二个是没有回答......
这应该是一个XAML只,并将使我删除从我的ViewModel(只具有一个暴露ExportRegulationType
所列财产的方法。这些是可能的
编辑:附加信息:
在应用程序中,我将有很多套不同的意见,模型和的ViewModels然而,由于出口控制法规是共同一致的要求,我正在使用合成来保持它干燥,即模型A和B都有一个ExportControl模型,ViewModels A1,A2,B1和B2将ha有一个ExportControlViewModel。视图将具有绑定到其ViewModel的ExportControlViewModel的控件。视图将有一个ComboBox或一个TextBlock,但不能同时使用(取决于用户是否可以更改该值)。
添加了C#作为标签,所以答案得到语法突出显示 –