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 № 1zastą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.