Frage

In einer Silverlight-Anwendung, die ich versuche, herauszufinden, wenn eine Eigenschaft auf einem Usercontrol geändert hat. Ich habe Interesse an einem bestimmten DependencyProperty, aber leider ist die Steuerung selbst nicht INotifyPropertyChanged implementieren.

Gibt es eine andere Art und Weise zu bestimmen, ob der Wert geändert hat?

War es hilfreich?

Lösung

In WPF Sie haben DependencyPropertyDescriptor.AddValueChanged , aber leider in Silverlight ist es nicht so etwas. So lautet die Antwort nein.

Vielleicht, wenn Sie erklären, was Sie zu tun versuchen können Sie die Situation oder die Verwendung Bindungen umgehen.

Andere Tipps

Sie können. Zumindest habe ich getan. Dennoch müssen die Vor-und Nachteile sehen.

 /// 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);
    }

Und jetzt können Sie RegisterForNotification fordern eine Änderungsmitteilung einer Eigenschaft eines Elements zu registrieren, wie.

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

Siehe meinen Beitrag hier auf der gleichen http: // amazedsaint .blogspot.com / 2009/12 / Silverlight-Listening-to-dependency.html

Als Jon Galloway auf einem anderen Thread geschrieben, könnten Sie in der Lage sein, so etwas wie WeakReference zu verwenden, um Eigenschaften zu wickeln Sie Interesse an und registrieren Sie sie in Ihrer eigenen Klasse. Dies ist WPF-Code, aber das Konzept beruht nicht auf DependencyPropertyDescriptor.

Artikel Link

Überprüfen Sie den folgenden Link aus. Es zeigt und indem diejenigen, wie um das Problem in Silverlight zu bekommen, wo Sie nicht DependencyPropertyDescriptor.AddValueChanged

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top