CoerceValueCallback Delegat
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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
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 ButtonColor
elementu , 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. |