2014-10-27 72 views
0

我有幾個項目的解決方案。在一個項目中,我的模型有一個名爲ModelEnum的枚舉。WPF數據綁定到帶有枚舉鍵的字典

然後在我的WPF項目中,我有一個ViewModel,它有一個字典。

在我的ViewModel我有我的ValuesDictionary設置爲:

private Dictionary<ModelEnum, string> _valuesDictionary = new Dictionary<ModelEnum, string>(); 

    public Dictionary<ModelEnum, string> ValuesDictionary 
    { 
     get { return _valuesDictionary; } 
     set { _valuesDictionary = value; OnPropertyChanged(_valuesDictionary); } 
    } 

在我的XAML我:

xmlns:model="clr-namespace:Model.Data;assembly=Model" 
... 
<TextBox Text="{Binding Path=ValuesDictionary[(model:ModelEnum)ModelEnum.Enum1].Value}" HorizontalAlignment="Left" Height="29" Margin="90,82,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="50"/> 

下面的XAML代碼片段:

(model:ModelEnum)ModelEnum.Enum1 

是給我錯誤「參數類型不匹配」。我很困惑,因爲我認爲我將它轉換爲它期望的Enum類型。我引用this SO問題嘗試它沒有運氣。

回答

3

(model:ModelEnum)Enum1] 

然後嘗試更換

(model:ModelEnum)ModelEnum.Enum1].Value 

。我希望它會起作用。

+0

我想你的意思是用'[(model:ModelEnum)Enum1]'替換整個'[(model:ModelEnum)ModelEnum.Enum1] .Value'(關於**。Value **的註釋)。否則,OP可能會認爲新的表達式是'[(model:ModelEnum)Enum1] .Value',這將不起作用。 – 2014-10-27 23:45:28

+0

就是這樣。謝謝!出於某種原因,xaml編輯器仍然在其下方顯示一條紅色的波浪線,但是當我測試它時,一切都很好。 – user1097108 2014-10-29 15:12:37

+0

@Taran:pfff,我整個下午都在調試這個。找不到一個好的答案,直到我終於找到了這個!感謝名單! – 2014-11-28 16:14:42

1

只需添加到這個潛在的缺陷,我有問題,而沒有明確的 「路徑=」 結合

{Binding ValuesDictionary[(model:ModelEnum)Enum1]} 

不工作,而是:

{Binding Path=ValuesDictionary[(model:ModelEnum)Enum1]} 

按預期工作,儘管設計師(或者ReSharper)仍然抱怨語法錯誤。