Ich habe eine Lösung mit ein paar Projekten. In einem Projekt ist mein Modell mit einer Enumeration namens ModelEnum.
Dann habe ich in meinem WPF-Projekt ein ViewModel mit einem Dictionary.
Und in meinem ViewModel habe ich mein ValuesDictionary Setup wie folgt:
private Dictionary<ModelEnum, string> _valuesDictionary = new Dictionary<ModelEnum, string>();
public Dictionary<ModelEnum, string> ValuesDictionary
{
get { return _valuesDictionary; }
set { _valuesDictionary = value; OnPropertyChanged(_valuesDictionary); }
}
In meinem XAML habe ich:
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"/>
Das folgende XAML-Snippet:
(model:ModelEnum)ModelEnum.Enum1
gibt mir den Fehler "Parametertyp stimmt nicht überein". Ich bin verwirrt, weil ich dachte, ich würde das auf den Enum-Typ übertragen, den er erwartet hatte Dies SO Frage, es ohne Glück zu versuchen.
Antworten:
4 für die Antwort № 1ersetzen
(model:ModelEnum)ModelEnum.Enum1].Value
mit
(model:ModelEnum)Enum1]
Dann versuche es. Ich hoffe, dass es funktionieren wird.
1 für die Antwort № 2
Um nur die möglichen Fallstricke mit diesem zu ergänzen, hatte ich Probleme ohne den expliziten "Path ="
d.h.
{Binding ValuesDictionary[(model:ModelEnum)Enum1]}
funktioniert nicht, aber:
{Binding Path=ValuesDictionary[(model:ModelEnum)Enum1]}
funktioniert wie erwartet, obwohl der Designer (oder vielleicht ReSharper) sich immer noch über Syntaxfehler beschwert.