/ / Powiązanie danych WPF ze słownikiem za pomocą klawisza wyliczającego - c #, wpf, xaml, słownik, wyliczenia

Wiązanie danych WPF ze słownikiem za pomocą klucza wyliczeniowego - c #, wpf, xaml, słownik, wyliczenia

Mam rozwiązanie z kilkoma projektami. W jednym projekcie jest mój model z wyliczeniem ModelEnum.

Następnie w moim projekcie WPF mam ViewModel, który ma słownik.

I w moim ViewModelu mam moją ValuesDictionary jako:

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

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

W moim XAML mam:

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"/>

Poniższy fragment XAML:

(model:ModelEnum)ModelEnum.Enum1

daje mi błąd "Niezgodność typu parametru". Jestem zdezorientowany, ponieważ myślałem, że rzuciłem to na typ Enum, którego się spodziewałem to WIĘCEJ, spróbuj to bez powodzenia.

Odpowiedzi:

4 dla odpowiedzi № 1

zastąpić

(model:ModelEnum)ModelEnum.Enum1].Value

z

(model:ModelEnum)Enum1]

Więc spróbuj. Mam nadzieję, że to zadziała.


1 dla odpowiedzi nr 2

Aby dodać do tego potencjalne pułapki, miałem problemy z powiązaniem bez wyraźnego "Path ="

to znaczy

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

nie działa, ale:

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

działa zgodnie z oczekiwaniami, chociaż projektant (a może ReSharper) nadal skarży się na błędy składniowe.