我有一個枚舉屬性的模型(在這種情況下,與出口管制條例有關)。向用戶顯示值時,我想顯示相應的字符串。有時這是在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#作爲標籤,所以答案得到語法突出顯示 –