Compartilhar via


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(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 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

Exemplos

Este exemplo mostra uma implementação PropertyChangedCallback que usa os dados do DependencyPropertyChangedEventArgs evento. 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();
    }

Comentários

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

  • Informações de retorno de chamada situacionais, conforme usado por um PropertyChangedCallback para uma propriedade de dependência personalizada. Esse é o caso mais comum.
  • Dados de evento para um evento baseado em DependencyPropertyChangedEventHandler. Isso é menos comum porque o único evento Windows Runtime que usa esse delegado é o evento Control.IsEnabledChanged. Para obter mais informações sobre como usar os dados do DependencyPropertyChangedEventArgs evento nesse caso, consulte DependencyPropertyChangedEventHandler ou Control.IsEnabledChanged.

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 este 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 o PropertyChangedCallback é atribuído a metadados de 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 Double propriedade 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 Thickness valores.

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 complementar Helper 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 no DependencyPropertyChangedEventArgs que é relatado 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 DependencyPropertyChangedEventArgs valor é obtê-lo dos parâmetros originais PropertyChangedCallback e passá-lo quando você disparar seu 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