J'ai un UserControl avec une propriété de type Dictionary, appelée HighlightedDates
. La propriété contient un ensemble de dates, avec une chaîne d'info-bulle pour chaque date, et elle fonctionne correctement lorsqu'elle est définie à partir du code.WPF: Liaison de données d'une propriété de dictionnaire
Je veux lier la propriété HighlightedDates
à une propriété modèle de vue, DatesWithNotes, du même type, en utilisant ce balisage:
<MyControls:MyCalendar SelectedDate="{Binding SelectedDate}"
HighlightedDates="{Binding DatesWithNotes}" />
Malheureusement, je reçois cette exception lorsque je tente de le faire:
Une 'liaison' ne peut pas être définie sur la propriété 'Value' de type 'DictionaryEntry'. Une 'liaison' ne peut être définie que sur un DependencyProperty d'un DependencyObject.
Il semble que WPF essaie de lier une entrée individuelle, pas le dictionnaire lui-même. Comme alternative, je cherche à ce que le modèle de vue pousse chaque nouvelle valeur ajoutée à son dictionnaire vers le dictionnaire du contrôle de l'utilisateur, ce qui semble terriblement maladroit. Et cela m'amène à ma question: existe-t-il un moyen de faire fonctionner cette liaison? Merci de votre aide.
J'ai essayé de le reproduire (en particulier la partie Dictionnaire) et cela semble fonctionner correctement. Fondamentalement, j'ai créé un UserControl avec une propriété Dictionary dependency, puis j'ai créé un ViewModel avec la même propriété de dictionnaire. Enfin, j'ai utilisé le contrôle UserControl dans une fenêtre, défini son DataContext à ViewModel et lié la propriété UserControl.Dictionary à la propriété ViewModel.Dictionary. Cela fonctionne très bien et je n'ai pas eu l'erreur. Donc je pense que cette erreur est lancée par autre chose. Peut-être que vous pouvez nous montrer la définition de UserControl? –
ASanch
Merci - J'ai répliqué votre test, et j'ai toujours la même erreur. J'ai reproduit le balisage et le code ci-dessous. Donc, évidemment, je fais quelque chose de mal ... –