Je rencontre des problèmes de liaison avec une classe personnalisée. La propriété dependency ne semble pas obtenir la valeur correcte de mon viewmodel. Voici ma classe personnalisée:Liaison à DependencyProperty sur la classe personnalisée
public class DataResource : DependencyObject
{
public static readonly DependencyProperty ContentProperty =
DependencyProperty.Register("Content",
typeof(object),
typeof(DataResource));
public object Content
{
get { return (object)GetValue(ContentProperty); }
set { SetValue(ContentProperty, value); }
}
}
Et dans mes ressources UserControl, j'ai:
<UserControl.Resources>
<local:DataResource x:Key="dataResource" Content="{Binding Test}"></data:DataResource>
</UserControl.Resources>
dans mon ViewModel « Test » est une propriété que je peux lier une étiquette à sans aucun problème. Est-ce que je fais quelque chose de mal ici dans cette implémentation?
Mise à jour: Cela fonctionne si j'hérite de Freezable au lieu de DependencyObject. Je ne suis pas tout à fait sûr pourquoi, j'espère que quelqu'un peut expliquer cela.
Si je change ma classe DataResource pour prolonger de FrameworkElement, ce que je n'ai un contexte encore? Je peux utiliser une CollectionViewSource dans mes ressources et la liaison fonctionne correctement puisque mon UserControl a déjà l'ensemble DataContext. – dbomb7
Peut-être que cela fonctionne via [contexte de l'héritage] (http://blogs.msdn.com/b/nickkramer/archive/2006/08/18/705116.aspx), je ne suis pas sûr cependant. Mais changer le type en 'FrameworkElement' n'est certainement pas le bon pas à faire, car vous ne pouvez pas vraiment vous lier au DataContext actuel, vous devriez considérer une autre source, comme 'ElementName' ou' Source' et spécifier un chemin par rapport à cette source. –