FrameworkPropertyMetadata.AffectsRender Proprietà

Definizione

Ottiene o imposta un valore che indica se una proprietà di dipendenza può avere potenzialmente effetto sul layout generale, in un modo che non influenza in modo specifico la disposizione o la misurazione, ma che richiederebbe un nuovo disegno.

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

Valore della proprietà

true se la proprietà di dipendenza in cui si trovano questi metadati può influire sul rendering. 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 AffectsRender impostato su true avvieranno una richiesta posticipata per invalidare gli oggetti visivi per tale elemento. Poiché questa implementazione a livello di framework WPF è già disponibile, in genere non è necessario cercare le proprietà di dipendenza, a AffectsRender 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 AffectsRender è true.

Le proprietà di qualsiasi classe derivata di PropertyMetadata vengono 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