CoerceValueCallback CoerceValueCallback CoerceValueCallback CoerceValueCallback Delegate

Определение

Предоставляет шаблон для метода, вызываемого при оценке значения свойства зависимостей и запросе запрета изменения значения.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 

Параметры

d
DependencyObject DependencyObject DependencyObject DependencyObject

Объект, содержащий свойство.The object that the property exists on. При вызове ответа, система свойств передает это значение.When the callback is invoked, the property system will pass this value.

baseValue
Object Object Object Object

Новое значение свойства до применения операции запрета изменения значения.The new value of the property, prior to any coercion attempt.

Возвращаемое значение

System.Object

Запрещенное значение (с соответствующим типом).The coerced value (with appropriate type).

Наследование
CoerceValueCallbackCoerceValueCallbackCoerceValueCallbackCoerceValueCallback

Примеры

Следующий пример включает реализацию этого обратного вызова для приведения сохраненного значения свойства зависимостей на основе других входных данных, например значения другого свойства.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. В этом случае обратный вызов проверяет, соответствует ли ShirtType свойство типу рубашки с кнопками; если это так, он устанавливает начальный цвет по умолчанию ButtonColorдля, если у типа рубашки нет кнопок ButtonColor , он приводит значение вернемся к начальному значению, которое ИПUI приводит к удалению раскрывающегося списка из действующих вариантов (не показано).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 ИПUI (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

Комментарии

Обратные вызовы, CoerceValueCallback основанные на, могут быть назначены свойству зависимостей с помощью нескольких различных методов.Callbacks based on CoerceValueCallback can be assigned to a dependency property through several different techniques. Для каждого из этих методов необходимо сначала создать новый объект метаданных свойства (PropertyMetadataили производный класс, такой как FrameworkPropertyMetadata).Each of these techniques requires that you first create a new property metadata object (PropertyMetadata, or a derived class such as FrameworkPropertyMetadata). Создайте объект метаданных с помощью сигнатуры конструктора, принимающей coerceValueCallback параметр, и назначьте этот параметр обработчику обратного вызова.Create the metadata object using a constructor signature that takes the coerceValueCallback parameter, and assign that parameter to your callback handler. Или создайте метаданные по любой сигнатуре и задайте CoerceValueCallback свойство перед размещением используемых метаданных.Or construct the metadata by any signature and set the CoerceValueCallback property prior to putting the metadata in use.

При наличии этих метаданных можно:When you have this metadata, you can:

  • Определите новое свойство зависимостей для нового класса с помощью сигнатуры Register, предоставляя метаданные в typeMetadata качестве значения.Define a new dependency property on a new class, using either signature of Register, giving the metadata as the typeMetadata value.

  • Переопределяйте метаданные (Call OverrideMetadata(Type, PropertyMetadata)) для существующего свойства зависимостей при наследовании от класса, владеющего свойством зависимостей.Override the metadata (call OverrideMetadata(Type, PropertyMetadata)) for an existing dependency property, when you derive from the class that owns the dependency property.

  • Добавление существующего свойства зависимостей в новый DependencyObject класс с помощью новых метаданных путем вызова. AddOwner(Type, PropertyMetadata)Add an existing dependency property to a new DependencyObject class, using new metadata, by calling AddOwner(Type, PropertyMetadata).

Реализации этого обратного вызова должны проверять значение в baseValue и определять его на основе значения или типа, является ли это значение допустимым для дальнейшего приведения.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.

Для свойства зависимостей вызывается каждый раз, когда система свойств или любые другие вызывающие вызовы вызываются CoerceValue в DependencyObject экземпляре dp, указывая идентификатор этого свойства в качестве. 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.

Изменения в значении свойства могут поступать от любого возможного участника в системе свойств.Changes to the property value may have come from any possible participant in the property system. К ним относятся стили, универсальная недействительность, триггеры, наследование значения свойства и настройка локального значения.This includes styles, generic invalidation, triggers, property value inheritance, and local value setting.

Как правило, следует избегать указания более одного CoerceValueCallback значения для любого заданного свойства зависимости (переопределение или добавление с новыми метаданными для свойства зависимостей, которое уже CoerceValueCallbackимело значение).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). Только один из обратных вызовов сможет действовать. Действующий обратный вызов будет применен к наиболее производному классу в наследовании по сравнению DependencyObject с вызывающим объектом.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. Другие обратные вызовы, назначенные метаданным для свойства зависимостей, как оно существовало выше в иерархии владельца, заменяются при переопределении метаданных.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.

Методы расширения

GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate)

Получает объект, представляющий метод, представленный указанным делегатом.Gets an object that represents the method represented by the specified delegate.

Применяется к

Дополнительно