40 votes

Les Setters ne fonctionnent pas sur les propriétés de dépendance ?

Juste une petite question, pour clarifier certains doutes. Les setters ne sont pas exécutés lorsqu'un élément est lié à une propriété de dépendance ?

public string TextContent
{
    get { return (string)GetValue(TextContentProperty); }
    set { SetValue(TextContentProperty, value); Debug.WriteLine("Setting value of TextContent: " + value); }
}

public static readonly DependencyProperty TextContentProperty =
    DependencyProperty.Register("TextContent", typeof(string), typeof(MarkdownEditor), new UIPropertyMetadata(""));

...

<TextBox Text="{Binding TextContent}" />

Comme je l'ai remarqué, l'élément ci-dessous dans mon setter ne fonctionne pas.

Debug.WriteLine("Setting value of TextContent: " + value);

54voto

Dean Chalk Points 7935

Le moteur de liaison WPF appelle GetValue y SetValue directement (en contournant les setters et getters de la propriété). Il faut que la propriété soit présente pour qu'elle puisse être prise en charge dans le balisage XAML (et compiler correctement).

52voto

Kishore Kumar Points 8636

Pour créer une DependencyProperty, ajoutez un champ statique de type DepdencyProperty à votre type et appelez DependencyProperty.Register() pour créer une instance de propriété de dépendance. Le nom de la DependencyProperty doit toujours se terminer par ...Property. Il s'agit d'une convention de dénomination dans WPF.

Pour qu'elle soit accessible comme une propriété .NET normale, vous devez ajouter une enveloppe de propriété. Ce wrapper ne fait rien d'autre que de récupérer et de définir la valeur en interne en utilisant les méthodes GetValue() et SetValue() héritées de DependencyObject et en passant la DependencyProperty comme clé.

N'ajoutez aucune logique à ces propriétés, car elles ne sont appelées que lorsque vous définissez la propriété à partir du code. Si vous définissez la propriété à partir de XAML, la méthode SetValue() est appelée directement.

Chaque DependencyProperty fournit des rappels pour la notification des changements, la coercition des valeurs et la validation. Ces rappels sont enregistrés sur la propriété de dépendance.

source : http://www.wpftutorial.net/DependencyProperties.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X