Pergunta

Em um aplicativo Silverlight Eu estou tentando descobrir quando uma propriedade em um usercontrol mudou. Estou interessado em um DependencyProperty particular, mas, infelizmente, o próprio controle não implementar INotifyPropertyChanged.

Existe alguma outra maneira de determinar se o valor mudou?

Foi útil?

Solução

Em WPF você tem DependencyPropertyDescriptor.AddValueChanged , mas infelizmente no Silverlight não há tal coisa. Portanto, a resposta é não.

Talvez se você explicar o que você está tentando fazer você pode contornar a situação, ou usar ligações.

Outras dicas

Você pode. Pelo menos eu fiz. Ainda preciso ver os prós e contras.

 /// Listen for change of the dependency property
    public void RegisterForNotification(string propertyName, FrameworkElement element, PropertyChangedCallback callback)
    {

        //Bind to a depedency property
        Binding b = new Binding(propertyName) { Source = element };
        var prop = System.Windows.DependencyProperty.RegisterAttached(
            "ListenAttached"+propertyName,
            typeof(object),
            typeof(UserControl),
            new System.Windows.PropertyMetadata(callback));

        element.SetBinding(prop, b);
    }

E agora, você pode chamar RegisterForNotification para registrar uma notificação de alteração de uma propriedade de um elemento, como.

RegisterForNotification("Text", this.txtMain,(d,e)=>MessageBox.Show("Text changed"));
            RegisterForNotification("Value", this.sliderMain, (d, e) => MessageBox.Show("Value changed"));

Veja o meu post aqui no mesmo http: // amazedsaint .blogspot.com / 2009/12 / Silverlight-listening-to-dependency.html

Como Jon Galloway postado em outro segmento, você pode ser capaz de usar algo como WeakReference para embrulhar propriedades que você está interessado e voltar a registar-los em sua própria classe. Este é o código WPF mas o conceito não depende de DependencyPropertyDescriptor.

artigo ligação

Confira no link a seguir. Ele showns como contornar o problema no Silverlight, onde você não tem DependencyPropertyDescriptor.AddValueChanged

http://themechanicalbride.blogspot.com/2008 /10/building-observable-model-in.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top