FrameworkPropertyMetadata.AffectsRender プロパティ


依存関係プロパティが一般的なレイアウトに何らかの形で影響する (配置や測定に特に影響を与えないが再描画が必要になる) 可能性があるかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether a dependency property potentially affects the general layout in some way that does not specifically influence arrangement or measurement, but would require a redraw.

 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


このメタデータが存在する依存関係プロパティがレンダリングに影響を与える場合は、true。それ以外の場合は、falsetrue if the dependency property on which this metadata exists affects rendering; otherwise, false. 既定値は、false です。The default is false.


メタデータがシールされるよう、かつメタデータのプロパティを設定できないように、メタデータは依存関係プロパティの操作に既に適用されています。The metadata has already been applied to a dependency property operation, so that metadata is sealed and properties of the metadata cannot be set.

次の例では、さまざまな依存関係プロパティフィールドから既定のメタデータをFrameworkPropertyMetadata取得し、その中のさまざまなプロパティの値を照会します。また、情報を使用して、"メタデータブラウザー" を実装するテーブルを設定します。The following example obtains the default metadata from various dependency property fields, queries the value of various FrameworkPropertyMetadata properties on it, and uses the information to populate a table to implement a "metadata browser".

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


FrameworkElementFrameworkContentElementには、要素OnPropertyChangedに存在するすべての依存関係プロパティに対する有効な値の変更を監視するの実装が含まれています。FrameworkElement and FrameworkContentElement include an implementation of OnPropertyChanged that monitors effective value changes to all dependency properties that exist on an element. このロジックの一部として、有効な値を変更し、がAffectsRendertrue設定されたメタデータを持つ依存関係プロパティは、遅延要求を開始して、その要素のビジュアルを無効にします。As part of that logic, dependency properties that change effective value and have metadata with AffectsRender set to true will initiate a deferred request to invalidate the visuals for that element. この wpf フレームワークレベルの実装は既に配置されているため、wpf フレームワークレベルのレイアウト動作をAffectsRender大幅に置き換えたり変更したりしない限り、では依存関係プロパティを検索する必要はありません。Because this WPF framework-level implementation is already in place, you typically do not need to look for dependency properties with AffectsRender unless you are substantially replacing or modifying the WPF framework-level layout behavior.

カスタムOnPropertyChanged実装では、がtrueの場合AffectsRenderに、依存関係プロパティの変更に類似した動作を選択することがあります。Custom OnPropertyChanged implementations might choose to have similar behavior for dependency property changes where AffectsRender is true.

PropertyMetadata派生クラスのプロパティは、通常、読み取り/書き込み可能としてオブジェクトモデルで定義されます。Properties on any derived classes of PropertyMetadata are typically defined in the object model as read-write. これは、インスタンスの初期化後に調整できるようにするためです。This is so they can be adjusted after initialization of the instance. ただし、 Register、、またはOverrideMetadataの呼び出しの一部としてメタAddOwnerデータが使用された後は、プロパティシステムによって、メタデータインスタンスとメタデータの詳細を伝達するプロパティが不変と見なされるようになります。However, after the metadata is consumed as part of a call to Register, AddOwner, or OverrideMetadata, the property system will seal that metadata instance and properties that convey the specifics of the metadata are now considered immutable. このメタデータインスタンスのがIsSealed trueの後にこのプロパティを設定しようとすると、例外が発生します。Attempting to set this property after IsSealed is true on this metadata instance will raise an exception.

XAML テキストの使用XAML Text Usage

このクラスのメンバーは、通常、でXAMLXAMLは使用されません。Members of this class are not typically used in XAMLXAML.