DependencyObject.InvalidateProperty(DependencyProperty) メソッド

定義

指定した依存関係プロパティの有効値を再評価します。Re-evaluates the effective value for the specified dependency property.

public:
 void InvalidateProperty(System::Windows::DependencyProperty ^ dp);
public void InvalidateProperty (System.Windows.DependencyProperty dp);
member this.InvalidateProperty : System.Windows.DependencyProperty -> unit
Public Sub InvalidateProperty (dp As DependencyProperty)

パラメーター

dp
DependencyProperty

無効にするプロパティの DependencyProperty 識別子。The DependencyProperty identifier of the property to invalidate.

次の例では、無効化されたプロパティの計算に関係するプロパティが変更されるたびに、カスタムプロパティで InvalidateProperty を呼び出します。The following example calls InvalidateProperty on a custom property, whenever properties that are involved in the invalidated property's calculations change. これは、CoerceValue メソッドを呼び出すための別の方法です。これは、プロパティを無効にすると、登録されている CoerceValueCallback も呼び出されるためです。This is an alternative technique to calling the CoerceValue method, because invalidating the property will also call any registered CoerceValueCallback.

static AreaButton()
{
    WidthProperty.OverrideMetadata(typeof(AreaButton), new FrameworkPropertyMetadata(new PropertyChangedCallback(InvalidateAreaProperty)));
    HeightProperty.OverrideMetadata(typeof(AreaButton), new FrameworkPropertyMetadata(new PropertyChangedCallback(InvalidateAreaProperty)));
}
static void InvalidateAreaProperty(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    d.InvalidateProperty(AreaProperty);
}
Shared Sub New()
    WidthProperty.OverrideMetadata(GetType(AreaButton), New FrameworkPropertyMetadata(New PropertyChangedCallback(AddressOf InvalidateAreaProperty)))
    HeightProperty.OverrideMetadata(GetType(AreaButton), New FrameworkPropertyMetadata(New PropertyChangedCallback(AddressOf InvalidateAreaProperty)))
End Sub
Private Shared Sub InvalidateAreaProperty(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
    d.InvalidateProperty(AreaProperty)
End Sub

注釈

@No__t-0 を呼び出すと、その依存関係プロパティに対して登録されている、関連付けられている、適用可能な CoerceValueCallback または PropertyChangedCallback 関数が呼び出される可能性があります。When you call InvalidateProperty, any associated and applicable CoerceValueCallback or PropertyChangedCallback functions registered for that dependency property might be invoked.

ローカル値が設定されているプロパティで InvalidateProperty を呼び出すことはできません。これは、ローカル値が、アニメーションを除く他のプロパティシステム入力よりも優先されるためです。Calling InvalidateProperty on a property that has its local value set will have no effect, because the local value takes precedence over other property system inputs, except for animations. ただし、ClearValue を呼び出してから InvalidateProperty を呼び出すこともできます。However, you could call ClearValue, then call InvalidateProperty. 詳細については、「依存関係プロパティ値の優先順位」を参照してください。For more information, see Dependency Property Value Precedence.

@No__t-0 の呼び出しは、多くの依存関係プロパティのシナリオに適用できるとは限りません。Calling InvalidateProperty is not necessarily applicable for many dependency property scenarios. 構成要素のいずれかの値が変更されたために依存関係プロパティが無効になった場合、プロパティシステムは、依存関係プロパティを自動的に無効にして再評価します。If a dependency property becomes invalidated because of value changes in any of the constituents, the property system invalidates and re-evaluates the dependency property automatically. ただし、InvalidateProperty が有用なシナリオもあります。However, there are still some appropriate scenarios where InvalidateProperty is useful. 特に、別の依存関係プロパティの強制値またはプロパティ変更コールバック内で InvalidateProperty を使用できます。In particular, you can use InvalidateProperty inside the coerce value or property changed callback for a different dependency property. また、InvalidateProperty を使用して、推奨される INotifyPropertyChanged 通知メカニズムを実装できないデータソースに対して、バインドを強制的に再評価することもできます (たとえば、から派生できないデータクラスを使用する場合や、データが静的メンバーである場合など)。You can also use InvalidateProperty to force re-evaluation of a binding against a data source that is not able to implement the recommended INotifyPropertyChanged notification mechanism (perhaps if consuming data classes that cannot be derived from, or where the data is a static member).

適用対象

こちらもご覧ください