DependencyPropertyChangedEventArgs Classe

Definição

Fornece dados para uma implementação PropertyChangedCallback que é invocada quando uma propriedade de dependência altera seu valor. Também fornece dados de evento para o evento Control.IsEnabledChanged e qualquer outro evento que use o delegado DependencyPropertyChangedEventHandler .

public ref class DependencyPropertyChangedEventArgs sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyPropertyChangedEventArgs final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyPropertyChangedEventArgs
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DependencyPropertyChangedEventArgs
Public NotInheritable Class DependencyPropertyChangedEventArgs
Herança
Object Platform::Object IInspectable DependencyPropertyChangedEventArgs
Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)

Exemplos

Este exemplo mostra uma implementação PropertyChangedCallback que usa os dados de evento DependencyPropertyChangedEventArgs. Em particular, ele usa NewValue para definir uma propriedade relacionada, que exibe o valor de DependencyProperty numérico subjacente como texto, em uma parte TextBlock de um controle composto.

private static void ValueChangedCallback(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
    NumericUpDown ctl = (NumericUpDown)obj;
    Int32 newValue = (Int32)args.NewValue;

    // Update the TextElement to the new value.
    if (ctl.TextElement != null)
    {
        ctl.TextElement.Text = newValue.ToString();
    }

Private Shared Sub ValueChangedCallback(ByVal obj As DependencyObject, _
                    ByVal args As DependencyPropertyChangedEventArgs)

    Dim ctl As NumericUpDown = DirectCast(obj, NumericUpDown)
    Dim newValue As Integer = args.NewValue

    ' Update the TextElement to the new value. 
    If ctl.TextElement IsNot Nothing Then
        ctl.TextElement.Text = newValue.ToString()
    End If

Comentários

DependencyPropertyChangedEventArgs fornece dados para duas situações diferentes que envolvem alterações nos valores da propriedade de dependência:

Uma implementação PropertyChangedCallback é uma parte opcional dos metadados de propriedade que você fornece ao registrar uma propriedade de dependência. O retorno de chamada é invocado internamente pelo sistema de propriedades de dependência. Para obter mais informações sobre propriedades de dependência em geral, consulte Visão geral das propriedades de dependência personalizadas e Propriedades de dependência.

Normalmente, você define o método com acesso privado ou interno. O método deve ser estático. Como o método é estático, o parâmetro DependencyObject (d) do delegado PropertyChangedCallback é importante. Isso é o que identifica a instância específica do objeto de dependência em que a propriedade está sendo alterada. Para muitas operações, como corrigir ou coagir um valor ou alterar outro valor de propriedade calculada em resposta no mesmo objeto, você fará referência a esse DependencyObject. Normalmente, você desejará convertê-lo para o tipo de proprietário da propriedade que é alterada. O tipo de proprietário é o tipo referenciado pelo nome na chamada DependencyProperty.Register ; os metadados em que seu PropertyChangedCallback é atribuído aos metadados da propriedade fazem parte dessa mesma chamada.

Esteja ciente da possibilidade de recursão. Se você alterar o valor de uma propriedade de dependência para a qual PropertyChangedCallback é invocado, ela será invocada novamente. Por exemplo, se você criou um retorno de chamada para uma propriedade Double em que o retorno de chamada sempre dividia o valor por 2, esse retorno de chamada seria chamado recursivamente e seu aplicativo estaria em um loop infinito.

É legal ter duas ou mais propriedades de dependência diferentes que definem retornos de chamada para alterar umas às outras, mas novamente tenha cuidado para não criar uma dependência circular não intencional que não permita que os valores se estabilizem.

Um PropertyChangedCallback só será invocado se OldValue e NewValue nos dados do evento forem diferentes.

OldValue e NewValue vêm sem tipo, portanto, qualquer comparação executada provavelmente precisa de uma conversão. Muitos valores de propriedade de dependência estão usando um tipo de valor, o que significa que você dependerá dos operadores ou de outra API do tipo de valor para fazer as comparações. Essa funcionalidade geralmente está disponível na estrutura que representa um valor, como uma API de utilitário. Por exemplo, a API do utilitário específico do idioma em um valor de Espessura permite comparar valores de espessura .

Observação

Se você estiver programando usando C++, algumas das estruturas de Windows Runtime não dão suporte a membros nondata, portanto, não ofereça suporte a operadores ou outro utilitário. Para eles, há uma classe auxiliar complementar que fornece a API de comparação que o código C++ pode usar. Por exemplo, use a classe ColorHelper para comparar valores de Cor .

Usando DependencyPropertyChangedEventArgs para um evento personalizado

Um implementador de controle personalizado pode considerar o uso de DependencyPropertyChangedEventHandler como o tipo delegado se um evento personalizado for acionado como resultado de uma alteração no valor da propriedade de dependência. Você só pode disparar esse evento de dentro do contexto de um PropertyChangedCallback. Isso ocorre porque o valor que foi alterado (a propriedade, o valor antigo e o novo) deve estar em DependencyPropertyChangedEventArgs que são relatados para o evento no nível do sistema de propriedades. Mas não há construtores para DependencyPropertyChangedEventArgs e nenhuma de suas propriedades é configurável, portanto, a única maneira de obter um valor DependencyPropertyChangedEventArgs é obtê-lo dos parâmetros PropertyChangedCallback originais e passá-lo ao disparar o evento personalizado.

Propriedades

NewValue

Obtém o valor da propriedade de dependência após a alteração relatada.

OldValue

Obtém o valor da propriedade de dependência antes da alteração relatada.

Property

Obtém o identificador para a propriedade de dependência em que ocorreu a alteração de valor.

Aplica-se a

Confira também