DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) DependencyObject.InvalidateProperty(DependencyProperty) Method

定義

指定した依存関係プロパティの有効値を再評価します。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 DependencyProperty 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

注釈

を呼び出すInvalidatePropertyと、その依存関係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.

InvalidateProperty呼び出しは、多くの依存関係プロパティのシナリオに必ずしも適用されるとは限りません。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).

適用対象

こちらもご覧ください