Condividi tramite


DependencyObject.InvalidateProperty(DependencyProperty) Metodo

Definizione

Valuta di nuovo il valore effettivo della proprietà di dipendenza specificata.

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)

Parametri

dp
DependencyProperty

L’identificatore DependencyProperty della proprietà di dipendenza da invalidare.

Esempio

Nell'esempio seguente viene chiamato InvalidateProperty su una proprietà personalizzata ogni volta che vengono modificate le proprietà coinvolte nei calcoli della proprietà invalidata. Si tratta di una tecnica alternativa alla chiamata al CoerceValue metodo , perché invalidando la proprietà verrà chiamato anche qualsiasi oggetto registrato 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

Commenti

Quando si chiama InvalidateProperty, qualsiasi funzione associata e applicabile CoerceValueCallback registrata PropertyChangedCallback per tale proprietà di dipendenza potrebbe essere richiamata.

La chiamata InvalidateProperty a una proprietà con il relativo valore locale impostato non avrà alcun effetto, perché il valore locale ha la precedenza su altri input del sistema di proprietà, ad eccezione delle animazioni. Tuttavia, è possibile chiamare , quindi chiamare ClearValueInvalidateProperty. Per altre informazioni, vedere Precedenza del valore della proprietà di dipendenza.

La chiamata InvalidateProperty non è necessariamente applicabile per molti scenari di proprietà di dipendenza. Se una proprietà di dipendenza viene invalidata a causa di modifiche di valore in uno degli elementi costitutivi, il sistema di proprietà invalida e rivaluta automaticamente la proprietà di dipendenza. Tuttavia, esistono ancora alcuni scenari appropriati in cui InvalidateProperty è utile. In particolare, è possibile usare InvalidateProperty all'interno del callback del valore di coece o della proprietà modificata per una proprietà di dipendenza diversa. È anche possibile usare InvalidateProperty per forzare la rivalutazione di un'associazione rispetto a un'origine dati che non è in grado di implementare il meccanismo di notifica consigliato INotifyPropertyChanged ,ad esempio se si utilizzano classi di dati che non possono essere derivate da o da dove i dati sono membri statici.

Si applica a

Vedi anche