Ho una soluzione con un paio di progetti. In un progetto, il mio modello ha un enum chiamato ModelEnum.
Quindi nel mio progetto WPF ho un ViewModel che ha un dizionario.
E nel mio ViewModel ho il mio setup ValuesDictionary come:
private Dictionary<ModelEnum, string> _valuesDictionary = new Dictionary<ModelEnum, string>();
public Dictionary<ModelEnum, string> ValuesDictionary
{
get { return _valuesDictionary; }
set { _valuesDictionary = value; OnPropertyChanged(_valuesDictionary); }
}
Nel mio XAML ho:
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"/>
Il seguente snippet XAML:
(model:ModelEnum)ModelEnum.Enum1
mi sta dando l'errore "Parameter type mismatch." Sono confuso perché pensavo di trasmettere questo al tipo Enum che mi aspettavo Questo QUINTA domanda per provarlo senza fortuna.
risposte:
4 per risposta № 1sostituire
(model:ModelEnum)ModelEnum.Enum1].Value
con
(model:ModelEnum)Enum1]
Quindi prova. Spero che funzionerà.
1 per risposta № 2
Solo per aggiungere alle potenziali insidie con questo, ho avuto problemi di associazione senza l'esplicito "Path ="
cioè
{Binding ValuesDictionary[(model:ModelEnum)Enum1]}
non funziona, ma:
{Binding Path=ValuesDictionary[(model:ModelEnum)Enum1]}
funziona come previsto, anche se il progettista (o forse ReSharper) si lamenta ancora degli errori di sintassi.