Condividi tramite


FrameworkPropertyMetadata.AffectsArrange Proprietà

Definizione

Ottiene o imposta un valore che indica se una proprietà di dipendenza può influire sul passaggio di disposizione durante operazioni del motore di layout.

public:
 property bool AffectsArrange { bool get(); void set(bool value); };
public bool AffectsArrange { get; set; }
member this.AffectsArrange : bool with get, set
Public Property AffectsArrange As Boolean

Valore della proprietà

Boolean

true se la proprietà di dipendenza in cui si trovano i metadati può influire sul passaggio di disposizione. In caso contrario, false. Il valore predefinito è false.

Eccezioni

Poiché sono già stati applicati a un'operazione della proprietà di dipendenza, questi metadati sono sealed e non è possibile impostarne le proprietà.

Esempio

Nell'esempio seguente vengono ottenuti i metadati predefiniti da vari campi delle proprietà di dipendenza, viene eseguita una query sul valore di varie FrameworkPropertyMetadata proprietà e vengono utilizzate le informazioni per popolare una tabella per implementare un "browser metadati".

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")

Commenti

FrameworkElement e FrameworkContentElement includono un'implementazione di che monitora le modifiche effettive dei valori a tutte le proprietà di OnPropertyChanged dipendenza esistenti in un elemento. Come parte di tale logica, le proprietà di dipendenza che modificano il valore effettivo e hanno metadati con AffectsArrange impostato su true avvieranno una richiesta posticipata per invalidare gli oggetti visivi per tale elemento (una chiamata a InvalidateArrange). Poiché questa implementazione a livello di framework WPF è già disponibile, in genere non è necessario cercare le proprietà di dipendenza, a AffectsArrange meno che non si stia sostituendo o modificando sostanzialmente il comportamento del layout a livello di framework WPF.

Le implementazioni personalizzate OnPropertyChanged potrebbero scegliere di avere un comportamento simile per le modifiche delle proprietà di dipendenza in cui AffectsArrange è true.

Le proprietà delle classi derivate di PropertyMetadata sono in genere definite nel modello a oggetti come lettura-scrittura. In questo modo possono essere regolati dopo l'inizializzazione dell'istanza. Tuttavia, dopo che i metadati vengono utilizzati come parte di una chiamata a Register, AddOwnero OverrideMetadata, il sistema di proprietà continuerà a bloccare l'istanza e le proprietà dei metadati che trasmettono le specifiche dei metadati sono ora considerate non modificabili. Se si tenta di impostare questa proprietà dopo IsSealed che si trova true in questa istanza di metadati, verrà generata un'eccezione.

Utilizzo del testo XAML

I membri di questa classe non vengono in genere usati in XAML.

Si applica a

Vedi anche