次の方法で共有


DependencyObject.InvalidateProperty(DependencyProperty) メソッド

定義

指定した依存関係プロパティの有効値を再評価します。

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 識別子。

次の例では、無効化されたプロパティの計算に関連するプロパティが変更されるたびに、カスタム プロパティに対して を呼び出 InvalidateProperty します。 プロパティを無効にすると、登録済CoerceValueCallbackみの も呼び出されるため、これは メソッドを呼CoerceValueび出す別の手法です。

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 関数が呼び出される可能性があります。

ローカル値が設定されているプロパティで を呼び出 InvalidateProperty しても効果はありません。これは、ローカル値がアニメーションを除く他のプロパティ システム入力よりも優先されるためです。 ただし、 を呼び出 ClearValueしてから を呼び出 InvalidatePropertyします。 詳細については、「依存関係プロパティ値の優先順位」を参照してください。

呼び出し InvalidateProperty は、多くの依存関係プロパティのシナリオに必ずしも適用できるとは限りません。 いずれかの構成要素で値が変更されたために依存関係プロパティが無効になった場合、プロパティ システムは依存関係プロパティを自動的に無効にして再評価します。 ただし、 が役に立つ適切なシナリオ InvalidateProperty がいくつかあります。 特に、別の依存関係プロパティの強制値またはプロパティ変更コールバック内で を使用 InvalidateProperty できます。 を使用 InvalidateProperty して、推奨される INotifyPropertyChanged 通知メカニズムを実装できないデータ ソースに対してバインドの再評価を強制することもできます (おそらく、派生できないデータ クラスを使用している場合、またはデータが静的メンバーである場合)。

適用対象

こちらもご覧ください