Dans le cas du contrôle personnalisé comme ce qui suit, comment ajouter PropertyChangedCallback pour DependencyProperty IsEnabledProperty hérité?WPF - contrôle personnalisé - Hérité DependencyProperty et PropertyChangedCallback
public class MyCustomControl : ContentControl
{
// Custom Dependency Properties
static MyCustomControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyCustomControl), new FrameworkPropertyMetadata(typeof(MyCustomControl)));
// TODO (?) IsEnabledProperty.OverrideMetadata(typeof(MyCustomControl), new PropertyMetadata(true, CustomEnabledHandler));
}
public CustomEnabledHandler(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// Implementation
}
}
Oui, il y a une autre option comme écouter la IsEnabledChangeEvent
public class MyCustomControl : ContentControl
{
public MyCustomControl()
{
IsEnabledChanged += …
}
}
Mais je n'aime pas le gestionnaire d'événements de registre d'approche dans tous les cas. Je préfère donc la substitution des métadonnées.
Qu'est-ce qui ne va pas avec OverrideMetadata? Notez cependant que cela devrait être FrameworkPropertyMetadata au lieu de PropertyMetadata. – Clemens
@Clemens Si j'utilise ce contrôle dans ** XAML **, j'obtiens une erreur: _Metadata override et les métadonnées de base doivent être du même type ou du même type dérivé._ Je l'essaie aussi avec 'FrameworkPropertyMetadata'. – David
Fonctionne avec FrameworkPropertyMetadata. Essaye encore. – Clemens