EDIT: J'ai reformulé toute la question.Comment puis-je lier les propriétés de dépendance d'un contrôle personnalisé à partir d'un dictionnaire de ressources défini dans Generic.xaml?
Bonjour à tous,
J'ai un contrôle personnalisé avec des propriétés de dépendance. Dans le fichier Generic.xaml, j'ai un dictionnaire de ressources. Il est un dictionnaire de ressources dans le dictionnaire externe, défini comme ceci:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyNamespace">
<!-- This is the dictionary-->
<ResourceDictionary x:Name="TheDictionaryImTalkingAbout" . . . >
.
.
.
</ResourceDictionary>
.
.
.
</ResourceDictionary>
Dans ce dictionnaire de ressources, TheDictionaryImTalkingAbout, je veux lier à une propriété de dépendance de mon contrôle. J'ai essayé le XAML suivant:
<Object x:Key="MyObject" SomeProperty="{Binding MyDependencyProperty, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MyNamespace:MyControl}}}"/>
La liaison ne renvoie aucune erreur, cependant, cela ne fonctionne pas. Quelqu'un peut-il me dire comment je suis censé lier mon contrôle parent à partir d'un dictionnaire de ressources qui se trouve dans Generic.xaml?
EDIT: Cette liaison fonctionne, mais seulement pour certaines propriétés. Je suis incapable de lier GradientStop Color à une propriété de dépendance de type couleur. Il a utilisé pour fonctionner quand c'était un UserControl, mais cela ne fonctionne plus maintenant que j'ai créé un contrôle personnalisé. Je ne sais pas pourquoi, mais si vous êtes intéressé, j'ai posé cette question ici:
Why can I no longer bind GradientStop Color to a Dependency Property of my control?
Merci tous ceux qui ont aidé,
Dalal
Oh ouais, oups. Je vous remercie. Je peux maintenant utiliser mon contrôle comme type ancêtre, mais la liaison ne semble toujours pas fonctionner. Ce n'est pas parce que vous ne pouvez pas accéder à un GradientStop, car comme je l'ai dit dans mon commentaire à Wallstreet Programmer, cela fonctionne dans la version UserControl de mon contrôle. Je pourrais essayer de mettre la liaison dans Generic.xaml au lieu d'un autre fichier. Mais je ne veux pas faire ça. Si vous avez d'autres solutions, ce serait génial. – Dalal
Vous avez répondu à une partie de ma question initiale, alors je suis allé de l'avant et j'ai marqué le vôtre comme étant le bon. – Dalal