CoerceValueCallback Delegar
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece um modelo para um método que é chamado sempre que um valor de propriedade de dependência está a ser reavaliado, ou se solicita especificamente coerção.
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
O objeto onde a propriedade existe. Quando o callback é invocado, o sistema de propriedades transmite este valor.
- baseValue
- Object
O novo valor da propriedade, antes de qualquer tentativa de coerção.
Devolver Valor
O valor coagido (com tipo apropriado).
Exemplos
O exemplo seguinte inclui uma implementação deste callback para coagir o valor armazenado de uma propriedade de dependência com base noutras entradas, como o valor de outra propriedade. Neste caso, o callback verifica se a ShirtType propriedade corresponde a um tipo de camisa com botões; se sim, estabelece uma cor inicial por defeito para o ButtonColor, se o tipo de camisa não tiver botões, obriga o ButtonColor valor a regressar a um valor inicial, o que faz com que a interface (não mostrada) remova esse menu suspenso das escolhas efetivas.
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
Observações
Os callbacks baseados em CoerceValueCallback podem ser atribuídos a uma propriedade de dependência através de várias técnicas diferentes. Cada uma destas técnicas exige que crie primeiro um novo objeto de metadados de propriedade (PropertyMetadata, ou uma classe derivada como FrameworkPropertyMetadata). Crie o objeto de metadados usando uma assinatura de construtor que tome o coerceValueCallback parâmetro e atribua esse parâmetro ao seu handler de callback. Ou construir os metadados por qualquer assinatura e definir a CoerceValueCallback propriedade antes de colocar os metadados em uso.
Quando tem estes metadados, pode:
Defina uma nova propriedade de dependência numa nova classe, usando qualquer uma das assinaturas de Register, dando os metadados como valor
typeMetadata.Substitua os metadados (chamada OverrideMetadata(Type, PropertyMetadata)) para uma propriedade de dependência existente, quando derivar da classe que detém essa propriedade de dependência.
Adicione uma propriedade de dependência existente a uma nova DependencyObject classe, usando novos metadados, chamando AddOwner(Type, PropertyMetadata).
As implementações deste callback devem verificar o valor em baseValue e determinar, com base no valor ou no tipo, se este é um valor que precisa de ser coagido adicionalmente.
A CoerceValueCallback propriedade para uma dependência é invocada sempre que o sistema de propriedades ou qualquer outro chamador chama CoerceValue uma DependencyObject instância, especificando o identificador dessa propriedade como o dp.
Alterações ao valor da propriedade podem ter vindo de qualquer possível participante no sistema imobiliário. Isto inclui estilos, invalidação genérica, gatilhos, herança do valor da propriedade e definição local de valor.
De um modo geral, deve evitar especificar mais do que um CoerceValueCallback para qualquer propriedade de dependência (sobrepor ou adicionar novos metadados para uma propriedade de dependência que já tinha um CoerceValueCallback). Só um dos que fazem callbacks será capaz de atuar. O callback atuante será aquele que foi aplicado à classe mais derivada da herança em comparação com o DependencyObject chamador. Outros callbacks, atribuídos aos metadados da propriedade de dependência tal como esta existia mais acima na hierarquia do proprietário, são substituídos quando os metadados são sobrepostos.
Métodos da Extensão
| Name | Description |
|---|---|
| GetMethodInfo(Delegate) |
Obtém um objeto que representa o método representado pelo delegado especificado. |