Comment inscrire une propriété jointe (WPF .NET)
Cet article explique comment inscrire une propriété jointe et fournir des accesseurs publics qui vous permettent d’accéder à la propriété jointe via XAML (Extensible Application Markup Language) et du code. Les propriétés jointes permettent aux paires propriété/valeur supplémentaires d’être définies sur n’importe quel élément XAML, même si l’élément ne définit pas ces propriétés supplémentaires dans son modèle objet. Les propriétés supplémentaires sont globalement accessibles. Les propriétés jointes sont généralement définies comme une forme spécialisée de propriété de dépendance qui n’a pas de wrapper de propriété conventionnelle. La plupart des propriétés jointes pour les types WPF (Windows Presentation Foundation) sont également implémentées en tant que propriétés de dépendance. Vous pouvez créer des propriétés de dépendance sur n’importe quel type dérivé DependencyObject.
Exemple
L’exemple suivant montre comment inscrire une propriété jointe en tant que propriété de dépendance à l’aide de la méthode RegisterAttached. La classe de fournisseur a la possibilité de spécifier une valeur par défaut dans les métadonnées de propriété. Pour plus d’informations sur les métadonnées de propriété, consultez métadonnées de propriété de dépendance. Dans cet exemple, la propriété HasFish
a un type de valeur Boolean, avec sa valeur par défaut définie sur false
.
La classe fournisseur d’une propriété jointe doit fournir des méthodes d’accesseur statiques get/set qui suivent la convention de nomenclature Get<property name>
et Set<property name>
. Le lecteur XAML utilise les accesseurs pour reconnaître l’attribut XAML de la propriété jointe et résoudre sa valeur en type approprié. Ces accesseurs sont nécessaires même si une propriété jointe n’est pas inscrite en tant que propriété de dépendance.
public class Aquarium : UIElement
{
// Register an attached dependency property with the specified
// property name, property type, owner type, and property metadata.
public static readonly DependencyProperty HasFishProperty =
DependencyProperty.RegisterAttached(
"HasFish",
typeof(bool),
typeof(Aquarium),
new FrameworkPropertyMetadata(defaultValue: false,
flags: FrameworkPropertyMetadataOptions.AffectsRender)
);
// Declare a get accessor method.
public static bool GetHasFish(UIElement target) =>
(bool)target.GetValue(HasFishProperty);
// Declare a set accessor method.
public static void SetHasFish(UIElement target, bool value) =>
target.SetValue(HasFishProperty, value);
}
Public Class Aquarium
Inherits UIElement
' Register an attached dependency property with the specified
' property name, property type, owner type, and property metadata.
Public Shared ReadOnly HasFishProperty As DependencyProperty =
DependencyProperty.RegisterAttached("HasFish", GetType(Boolean), GetType(Aquarium),
New FrameworkPropertyMetadata(defaultValue:=False,
flags:=FrameworkPropertyMetadataOptions.AffectsRender))
' Declare a get accessor method.
Public Shared Function GetHasFish(target As UIElement) As Boolean
Return target.GetValue(HasFishProperty)
End Function
' Declare a set accessor method.
Public Shared Sub SetHasFish(target As UIElement, value As Boolean)
target.SetValue(HasFishProperty, value)
End Sub
End Class
Voir aussi
- DependencyProperty
- Aperçu des propriétés jointes
- Vue d’ensemble des propriétés de dépendance
- propriétés de dépendance personnalisées
- sujets pratiques
.NET Desktop feedback