/ / Прив'язка даних WPF до словника з ключем enum - c #, wpf, xaml, словник, enums

Прив'язка даних WPF до словника з ключем enum - c #, wpf, xaml, словник, enums

У мене є рішення з декількома проектами. У одному проекті моя модель має перелік під назвою ModelEnum.

Потім у моєму проекті 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

дає мені помилку "невідповідність типового типу". Я заплутався, тому що думав, що я відкидав це на тип Енума, який він очікував. Я посилався на це це ТАКОЕ питання, щоб спробувати це без удачі.

Відповіді:

4 для відповіді № 1

замінити

(model:ModelEnum)ModelEnum.Enum1].Value

з

(model:ModelEnum)Enum1]

Потім спробуй. Я сподіваюсь, що це буде працювати.


1 для відповіді № 2

Просто щоб додати до потенційних підводних каменів з цим, у мене були проблеми обов'язкового без явного "Path ="

тобто

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

не працює, але:

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

працює, як очікувалося, хоча дизайнер (або, можливо, ReSharper) все ще скаржиться на синтаксичні помилки.