/ / WPF-Datenbindung an das Wörterbuch mit Enum-Schlüssel - c #, wpf, xaml, dictionary, enums

WPF-Datenbindung an das Wörterbuch mit Enum-Schlüssel - c #, wpf, xaml, dictionary, enums

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 № 1

ersetzen

(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.