2009-05-26 10 views
1

J'essaie de développer un contrôle d'utilisateur de bouton tri-state personnalisé et jusqu'à présent, j'ai utilisé CTF pour définir les propriétés.
Mais je voudrais changer cela pour utiliser le système de propriété WPF avec PropertiesDependencies.

Malheureusement, je ne parviens pas à le faire fonctionner, lorsque je définis la propriété de mon xaml (père) en utilisant une DynamicResource, la valeur n'est pas définie.DependencyPropert non défini à partir de XAML avec DynamicResource en tant que paramètre

<common:StateImageButton x:Name="story_buttonRecord" BackTest="{DynamicResource backTest}" /> 

Voici le code que j'ai dans mon contrôleur de bouton:

public ImageSource BackTest 
    { 
     get { return (ImageSource)this.GetValue(BackProp); } 
     set { this.SetValue(WidthProp,value); } 
    } 

    public static readonly DependencyProperty BackProp = 
     DependencyProperty.Register(
      "BackTest", 
      typeof(ImageSource), 
      typeof(StateImageButton), 
      new FrameworkPropertyMetadata()); 

Je ne même pas utiliser la propriété dans mon bouton XAML encore, mais il ne semble même pas entrer dans le Setter . J'ai beaucoup cherché en ligne sans succès. Alors peut-être qu'il me manque quelque chose.

Merci d'avance pour votre aide, Boris

Répondre

1

En outre, WPF ne pas utiliser le dispositif de réglage prévu pour définir une propriété, il le fait directement.

La méthode de débogage lorsque WPF définit une propriété consiste à ajouter un rappel lorsque la propriété est définie, comme cela.

public static readonly DependencyProperty BackProp = 
    DependencyProperty.Register(
     "BackTest", 
     typeof(ImageSource), 
     typeof(StateImageButton), 
     new FrameworkPropertyMetadata(OnBackChanged)); 

private static void OnBackChanged(
    DependencyObject d, 
    DependencyPropertyChangedEventArgs e) 
{ 
    var sender = (StateImageButton)d; // Put a breakpoint here 
} 
+0

Merci, la valeur a été correctement définie, et pour l'enregistrement, il est possible de définir DynamicRecords en tant que paramètres pour les propriétés personnalisées. –

Questions connexes