Respostas:
Propriedades de dependência são propriedades de classes derivadas de DependencyObject, e são especiais porque, em vez de simplesmente usar um campo de suporte para armazenar seu valor, elas usam alguns métodos auxiliares no DependencyObject.
O melhor de tudo é que eles têm todo o encanamento para ligação de dados incorporado. Se você vincular algo a eles, eles notificarão quando mudarem.
A única explicação que achei útil e bem escrita é esta: http://www.wpftutorial.net/dependencyproperties.html
Basicamente, DependencyProperties diferem das propriedades regulares, pois não são apenas setters / getters para campos da classe, mas recuperam seus valores reais dinamicamente durante o tempo de execução. O SetValue()
método dos PDs é bastante direto e define o valor local da propriedade com o valor que você forneceu. No entanto, ao tentar GetValue()
partir de um DependencyProperty, ele primeiro procurará um valor local, se nenhum estiver presente (o que é viável nas DependencyProperties, ao contrário das propriedades regulares), continuará na árvore lógica da interface do usuário até encontrar esse valor. Se a estrutura alcançou o topo da árvore sem encontrar nenhum valor local, ela usará um valor padrão predefinido como o valor da propriedade.
Esse método permite que DependencyProperties consuma menos memória que as propriedades regulares, pois apenas os valores que foram explicitamente definidos pelo usuário serão armazenados localmente.
E, como mencionado acima, o DependencyProperties também nos permite vincular a eles no código XAML e definir gatilhos neles, o que em propriedades regulares não é permitido.
Espero ter conseguido limpar um pouco da imprecisão :)
Grid.Row="1"
em a Button
definirá a Linha 2 no pai Grid
(devido ao fato de que as linhas são baseadas em zero), mas o Row
DependencyProperty pertence ao Grid
objeto.
DependencyProperties also allow us to bind to them in the XAML code and set triggers on them, which on regular properties is not allowed
, você quis dizer que a ligação em XAML e a configuração de gatilhos ou apenas a configuração de gatilhos não são permitidas. Agradeço pelo acompanhamento e por ajudar a tornar as coisas mais claras!
Value
propriedade (Não DP) com o valor 0 e você quiser que o seu objectivo de fazer alguma coisa quando Value
muda para 1. Você vai ser capaz de fazê-lo usando DataTrigger
e definindo oBinding={Binding Path=Value, Value=1}
http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/ fornece uma boa explicação das propriedades da dependência, tanto no contexto do WF quanto do WPF.
Um trecho:
Ponto-chave - O valor das propriedades de dependência são resolvidas
O objetivo final de uma propriedade de dependência, como qualquer propriedade, é gerenciar o estado. Mas, diferentemente das propriedades .net normais, o valor da propriedade local não é armazenado em uma variável de instância.
Em vez disso, as propriedades de dependência são registradas com a estrutura de propriedades de dependência e o valor da propriedade subjacente é resolvido - o que significa que o valor é determinado pela estrutura de propriedades de dependência com base nas regras definidas pelo registro de propriedades.