CoerceValueCallback Delegat

Definicja

Udostępnia szablon dla metody wywoływanej za każdym razem, gdy wartość właściwości zależności jest ponownie obliczana, lub zażądano przymusu.

public delegate System::Object ^ CoerceValueCallback(DependencyObject ^ d, System::Object ^ baseValue);
public delegate object CoerceValueCallback(DependencyObject d, object baseValue);
type CoerceValueCallback = delegate of DependencyObject * obj -> obj
Public Delegate Function CoerceValueCallback(d As DependencyObject, baseValue As Object) As Object 

Parametry

d
DependencyObject

Obiekt, na który istnieje właściwość. Po wywołaniu zwrotnym system właściwości przekaże tę wartość.

baseValue
Object

Nowa wartość właściwości przed podjęciem próby przymusu.

Wartość zwracana

Object

Wartość przymusowa (z odpowiednim typem).

Przykłady

W poniższym przykładzie przedstawiono implementację tego wywołania zwrotnego, aby przejąć przechowywaną wartość właściwości zależności na podstawie innych danych wejściowych, takich jak wartość innej właściwości. W takim przypadku wywołanie zwrotne sprawdza, czy ShirtType właściwość odpowiada typowi koszuli z przyciskami. Jeśli tak, ustanawia początkowy domyślny kolor dla ButtonColorelementu , jeśli typ koszuli nie ma przycisków, cofa ButtonColor wartość z powrotem do wartości początkowej, co powoduje, że interfejs użytkownika (nie jest pokazany), aby usunąć tę listę rozwijaną z skutecznych wyborów.

private static object CoerceButtonColor(DependencyObject d, object value)
{
    ShirtTypes newShirtType = (d as Shirt).ShirtType;
    if (newShirtType == ShirtTypes.Dress || newShirtType == ShirtTypes.Bowling)
    {
        return ButtonColors.Black;				
    }
    return ButtonColors.None;
}
Private Shared Function CoerceButtonColor(ByVal d As DependencyObject, ByVal value As Object) As Object
    Dim newShirtType As ShirtTypes = (TryCast(d, Shirt)).ShirtType
    If newShirtType = ShirtTypes.Dress OrElse newShirtType = ShirtTypes.Bowling Then
        Return ButtonColors.Black
    End If
    Return ButtonColors.None
End Function

Uwagi

Wywołania zwrotne na CoerceValueCallback podstawie można przypisać do właściwości zależności za pomocą kilku różnych technik. Każda z tych technik wymaga, aby najpierw utworzyć nowy obiekt metadanych właściwości (PropertyMetadatalub klasę pochodną, taką jak FrameworkPropertyMetadata). Utwórz obiekt metadanych przy użyciu podpisu konstruktora, który przyjmuje coerceValueCallback parametr, i przypisz ten parametr do procedury obsługi wywołania zwrotnego. Lub skonstruuj metadane według dowolnego podpisu i ustaw CoerceValueCallback właściwość przed umieszczeniem metadanych w użyciu.

Po utworzeniu tych metadanych można wykonywać następujące czynności:

  • Zdefiniuj nową właściwość zależności dla nowej klasy przy użyciu dowolnego podpisu Register, podając metadane jako typeMetadata wartość.

  • Zastąpij metadane (wywołanie OverrideMetadata(Type, PropertyMetadata)) dla istniejącej właściwości zależności, gdy pochodzisz z klasy, która jest właścicielem właściwości zależności.

  • Dodaj istniejącą właściwość zależności do nowej DependencyObject klasy przy użyciu nowych metadanych, wywołując metodę AddOwner(Type, PropertyMetadata).

Implementacje tego wywołania zwrotnego powinny sprawdzać wartość i baseValue określać na podstawie wartości lub typu, czy jest to wartość, która musi być dalej zmuszana.

Właściwość CoerceValueCallback dla właściwości zależności jest wywoływana za każdym razem, gdy system właściwości lub dowolny inny obiekt wywołujący wywołuje CoerceValue DependencyObject wystąpienie, określając identyfikator tej właściwości jako dp.

Zmiany wartości właściwości mogły pochodzić od dowolnego możliwego uczestnika w systemie właściwości. Obejmuje to style, ogólną unieważnienie, wyzwalacze, dziedziczenie wartości właściwości i ustawienie wartości lokalnej.

Ogólnie rzecz biorąc, należy unikać określania więcej niż jednej CoerceValueCallback dla danej właściwości zależności (zastępowanie lub dodawanie z nowymi metadanymi dla właściwości zależności, która ma CoerceValueCallbackjuż wartość ). Tylko jedna z wywołań zwrotnych będzie mogła działać. Działanie wywołania zwrotnego będzie tym, który został zastosowany do najbardziej pochodnej klasy w dziedziczeniu w porównaniu z obiektem wywołującym DependencyObject . Inne wywołania zwrotne przypisane do metadanych dla właściwości zależności, ponieważ istniały wyższe w hierarchii właściciela, są zastępowane, gdy metadane są zastępowane.

Metody rozszerzania

GetMethodInfo(Delegate)

Pobiera obiekt reprezentujący metodę reprezentowaną przez określonego delegata.

Dotyczy

Zobacz też