У мене є рішення з декількома проектами. У одному проекті моя модель має перелік під назвою 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) все ще скаржиться на синтаксичні помилки.