CoerceValueCallback Delegar

Definição

Fornece um modelo para um método que é chamado sempre que um valor da propriedade de dependência está sendo reavaliado ou a coerção é especificamente solicitada.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 

Parâmetros

d
DependencyObject

O objeto na qual a propriedade existe.The object that the property exists on. Quando o retorno de chamada for invocado, o sistema de propriedade passará esse valor.When the callback is invoked, the property system will pass this value.

baseValue
Object

O novo valor da propriedade, antes de qualquer tentativa de coerção.The new value of the property, prior to any coercion attempt.

Valor Retornado

Object

O valor imposto (com o tipo apropriado).The coerced value (with appropriate type).

Herança
CoerceValueCallback

Exemplos

O exemplo a seguir inclui uma implementação desse retorno de chamada para forçar o valor armazenado de uma propriedade de dependência com base em outras entradas, como o valor de outra propriedade.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. Nesse caso, o retorno de chamada verifica se a ShirtType propriedade corresponde a um tipo de camisa que tem botões; se ele estabelecer uma cor padrão inicial para o ButtonColor, se o tipo de camiseta não tiver botões, ele forçará o ButtonColor valor de volta a um valor inicial, que faz Interface de UsuárioUI com que o (não mostrado) remova essa lista suspensa das opções efetivas.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 Interface de UsuárioUI (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

Comentários

Os retornos de CoerceValueCallback chamada com base em podem ser atribuídos a uma propriedade de dependência por meio de várias técnicas diferentes.Callbacks based on CoerceValueCallback can be assigned to a dependency property through several different techniques. Cada uma dessas técnicas exige que você primeiro crie um novo objeto de metadados dePropertyMetadataPropriedade (ou uma classe FrameworkPropertyMetadataderivada, como).Each of these techniques requires that you first create a new property metadata object (PropertyMetadata, or a derived class such as FrameworkPropertyMetadata). Crie o objeto de metadados usando uma assinatura de construtor que coerceValueCallback usa o parâmetro e atribua esse parâmetro ao seu manipulador de retorno de chamada.Create the metadata object using a constructor signature that takes the coerceValueCallback parameter, and assign that parameter to your callback handler. Ou construa os metadados por qualquer assinatura e defina a CoerceValueCallback propriedade antes de colocar os metadados em uso.Or construct the metadata by any signature and set the CoerceValueCallback property prior to putting the metadata in use.

Quando você tiver esses metadados, poderá:When you have this metadata, you can:

As implementações desse retorno de chamada devem verificar baseValue o valor em e determinar com base no valor ou no tipo se esse é um valor que precisa ser forçado.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.

O CoerceValueCallback para uma propriedade de dependência é invocado sempre que o sistema de propriedades ou qualquer outra CoerceValue chamada de DependencyObject chamador em uma instância, especificando o identificador dessa dpPropriedade como o.The 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.

As alterações no valor da propriedade podem ter vindo de qualquer participante possível no sistema de propriedades.Changes to the property value may have come from any possible participant in the property system. Isso inclui estilos, invalidação genérica, gatilhos, herança de valor de propriedade e configuração de valor local.This includes styles, generic invalidation, triggers, property value inheritance, and local value setting.

Em geral, você deve evitar especificar mais CoerceValueCallback de um para qualquer propriedade de dependência específica (substituindo ou adicionando com novos metadados para uma propriedade de CoerceValueCallbackdependência que já tinha um).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). Somente um dos retornos de chamada será capaz de agir. O retorno de chamada agindo será aquele que foi aplicado à classe mais derivada na herança em comparação com o DependencyObject chamador.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. Outros retornos de chamada atribuídos a metadados para a propriedade de dependência como eram mais altos na hierarquia de proprietário são substituídos quando os metadados são substituídos.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.

Métodos de Extensão

GetMethodInfo(Delegate)

Obtém um objeto que representa o método representado pelo delegado especificado.Gets an object that represents the method represented by the specified delegate.

Aplica-se a

Veja também