CoerceValueCallback Delegat

Definicja

Udostępnia szablon metody, która jest wywoływana za każdym razem, gdy wartość właściwości zależności jest przeliczana lub zażądano założenia.Provides a template for a method that is called whenever a dependency property value is being re-evaluated, or coercion is specifically requested.

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, w którym znajduje się właściwość.The object that the property exists on. Po wywołaniu wywołania zwrotnego System właściwości przekaże tę wartość.When the callback is invoked, the property system will pass this value.

baseValue
Object

Nowa wartość właściwości, przed podjęciem próby wykonania.The new value of the property, prior to any coercion attempt.

Wartość zwracana

Object

Wartość przymusowa (z odpowiednim typem).The coerced value (with appropriate type).

Dziedziczenie
CoerceValueCallback

Przykłady

Poniższy przykład zawiera implementację tego wywołania zwrotnego w celu wymuszenia przechowywanej wartości właściwości zależności na podstawie innych danych wejściowych, takich jak wartość innej właściwości.The following example includes an implementation of this callback to coerce the stored value of a dependency property based on other inputs, such as another property's value. W takim przypadku wywołania zwrotne sprawdzają, czy ShirtType właściwość odpowiada typowi koszulki, która ma przyciski; Jeśli tak, oznacza to ButtonColor, że określa początkowy kolor domyślny dla, jeśli typ koszul nie ma przycisków ButtonColor , spowoduje to przekształcenie wartości z powrotem do wartości początkowej, która powoduje Interfejs użytkownikaUI , że (niepokazywany) usunąć tę listę rozwijaną z efektywnych opcji.In this case, the callback checks to see whether the ShirtType property corresponds to a type of shirt that has buttons; if so it establishes a starting default color for the ButtonColor, if the shirt type has no buttons, it coerces the ButtonColor value back to a starting value, which causes the Interfejs użytkownikaUI (not shown) to remove that dropdown from the effective choices.

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 oparte CoerceValueCallback na programie można przypisywać do właściwości zależności za pomocą kilku różnych technik.Callbacks based on CoerceValueCallback can be assigned to a dependency property through several different techniques. Każda z tych technik wymaga, aby najpierw utworzyć nowy obiekt metadanych właściwości (PropertyMetadatalub klasę pochodną, taką jak FrameworkPropertyMetadata).Each of these techniques requires that you first create a new property metadata object (PropertyMetadata, or a derived class such as 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.Create the metadata object using a constructor signature that takes the coerceValueCallback parameter, and assign that parameter to your callback handler. Lub Utwórz metadane za pomocą dowolnej sygnatury i ustaw CoerceValueCallback właściwość przed umieszczeniem metadanych w użyciu.Or construct the metadata by any signature and set the CoerceValueCallback property prior to putting the metadata in use.

Po wykonaniu tych metadanych można:When you have this metadata, you can:

Implementacje tego wywołania zwrotnego powinny sprawdzać baseValue wartość w i określać na podstawie wartości lub typu, czy jest to wartość, która musi być dodatkowo wymuszona.Implementations of this callback should check the value in baseValue and determine based on either the value or the type whether this is a value that needs to be further coerced.

Właściwość for zależności jest wywoływana za każdym razem, gdy system właściwości lub inne wywołania CoerceValue wywołujące w DependencyObject wystąpieniu dp, określając identyfikator tej właściwości jako. CoerceValueCallbackThe CoerceValueCallback for a dependency property is invoked any time that the property system or any other caller calls CoerceValue on a DependencyObject instance, specifying that property's identifier as the dp.

Zmiany wartości właściwości mogą pochodzić z dowolnego możliwego uczestnika w systemie właściwości.Changes to the property value may have come from any possible participant in the property system. Obejmuje to style, ogólne unieważnienie, wyzwalacze, dziedziczenie wartości właściwości i ustawienie wartości lokalnej.This includes styles, generic invalidation, triggers, property value inheritance, and local value setting.

Ogólnie rzecz biorąc, należy unikać określania więcej CoerceValueCallback niż jednego elementu dla danej właściwości zależności (zastępowanie lub Dodawanie nowych metadanych dla właściwości zależności, która już CoerceValueCallbackmiała).Generally you should avoid specifying more than one CoerceValueCallback for any given dependency property (overriding or adding with new metadata for a dependency property that already had a CoerceValueCallback). Tylko jedno wywołanie zwrotne będzie mogło działać. Działające wywołanie zwrotne będzie to ten, który został zastosowany do najbardziej pochodnej klasy w dziedziczeniu w porównaniu DependencyObject z obiektem wywołującym.Only one of the callbacks will be able to act. The acting callback will be the one that was applied to the most derived class in the inheritance as compared to the DependencyObject caller. Inne wywołania zwrotne przypisane do metadanych dla właściwości zależności, które istniały wyżej w hierarchii właściciela, są zastępowane, gdy metadane są zastępowane.Other callbacks as assigned to metadata for the dependency property as it existed higher in the owner hierarchy are replaced when the metadata is overridden.

Metody rozszerzania

GetMethodInfo(Delegate)

Pobiera obiekt, który reprezentuje metodę reprezentowaną przez określony delegat.Gets an object that represents the method represented by the specified delegate.

Dotyczy

Zobacz też