FrameworkPropertyMetadata.AffectsMeasure Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit une valeur qui indique si une propriété de dépendance peut affecter la passe de mesure pendant des opérations du moteur de présentation.
public:
property bool AffectsMeasure { bool get(); void set(bool value); };
public bool AffectsMeasure { get; set; }
member this.AffectsMeasure : bool with get, set
Public Property AffectsMeasure As Boolean
Valeur de propriété
true
si la propriété de dépendance sur laquelle ces métadonnées existent peut affecter la passe de mesure ; sinon, false
. La valeur par défaut est false
.
Exceptions
Les métadonnées ont déjà été appliquées à une opération de propriété de dépendance : elles sont donc sealed et les propriétés des métadonnées ne peuvent pas être définies.
Exemples
L’exemple suivant obtient les métadonnées par défaut à partir de différents champs de propriété de dépendance, interroge la valeur des différentes FrameworkPropertyMetadata propriétés qu’ils contiennent et utilise les informations pour remplir une table afin d’implémenter un « navigateur de métadonnées ».
pm = dp.GetMetadata(dp.OwnerType);
pm = dp.GetMetadata(dp.OwnerType)
FrameworkPropertyMetadata fpm = pm as FrameworkPropertyMetadata;
if (fpm!=null) {
AffectsArrange.Text = (fpm.AffectsArrange) ? "Yes" : "No";
AffectsMeasure.Text = (fpm.AffectsMeasure) ? "Yes" : "No";
AffectsRender.Text = (fpm.AffectsRender) ? "Yes" : "No";
Inherits.Text = (fpm.Inherits) ? "Yes" : "No";
IsDataBindingAllowed.Text = (fpm.IsDataBindingAllowed) ? "Yes" : "No";
BindsTwoWayByDefault.Text = (fpm.BindsTwoWayByDefault) ? "Yes" : "No";
}
Dim fpm As FrameworkPropertyMetadata = TryCast(pm, FrameworkPropertyMetadata)
If fpm IsNot Nothing Then
AffectsArrange.Text = If((fpm.AffectsArrange), "Yes", "No")
AffectsMeasure.Text = If((fpm.AffectsMeasure), "Yes", "No")
AffectsRender.Text = If((fpm.AffectsRender), "Yes", "No")
[Inherits].Text = If((fpm.Inherits), "Yes", "No")
IsDataBindingAllowed.Text = If((fpm.IsDataBindingAllowed), "Yes", "No")
BindsTwoWayByDefault.Text = If((fpm.BindsTwoWayByDefault), "Yes", "No")
Remarques
FrameworkElement et FrameworkContentElement incluent une implémentation de OnPropertyChanged qui surveille les modifications de valeur effectives de toutes les propriétés de dépendance qui existent sur un élément. Dans le cadre de cette logique, les propriétés de dépendance qui changent la valeur effective et dont les métadonnées AffectsMeasure sont définies true
sur lancent une demande différée pour invalider les visuels de cet élément. Étant donné que cette implémentation au niveau de l’infrastructure WPF est déjà en place, vous n’avez généralement pas besoin de rechercher des propriétés de dépendance avec AffectsMeasure , sauf si vous remplacez ou modifiez considérablement le comportement de disposition au niveau de l’infrastructure WPF.
Les implémentations personnalisées OnPropertyChanged peuvent choisir d’avoir un comportement similaire pour les modifications de propriété de dépendance où AffectsMeasure est true
.
Les propriétés sur les classes dérivées de PropertyMetadata sont généralement définies dans le modèle objet en lecture-écriture. Cela permet de les ajuster après l’initialisation de l’instance. Toutefois, une fois les métadonnées consommées dans le cadre d’un appel à Register, AddOwnerou OverrideMetadata, le système de propriétés scelle cette instance de métadonnées et les propriétés qui transmettent les spécificités des métadonnées sont désormais considérées comme immuables. Si vous tentez de définir cette propriété après IsSealed est true
sur cette instance de métadonnées, une exception est levée.
Utilisation du texte XAML
Les membres de cette classe ne sont généralement pas utilisés en XAML.