您聲明您的接口繼承自INotifyPropertyChanged,因此可合理預期通過「PropertyChanged」事件通知監聽器屬性更改。假設是這樣的:
public interface IInjectedObject : INotifyPropertyChanged
{
bool MyImportantProperty { get; }
}
那麼,你的依賴對象必須監聽INotifyPropertyChanged.PropertyChanged
事件:
public class MyDependantClass
{
public MyDependantClass(IInjectedObject injectedObject)
{
MyInjectedObject = injectedObject;
}
// We wrap the private field in a protected property,
// to capture the event subscriptions
private IInjectedObject _myInjectedObject;
protected IInjectedObject MyInjectedObject
{
get { return _myInjectedObject; }
set
{
// unsubscribe from the old property's event
if(_myInjectedObject!= null)
_myInjectedObject.PropertyChanged -= OnPropertyChanged;
_myInjectedObject= value;
// subscribe to the new property's event
if(_myInjectedObject!= null)
_myInjectedObject.PropertyChanged += OnPropertyChanged;
}
}
private void OnPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if(args.PropertyName == "MyImportantProperty")
{
//react to the changed property here!
}
}
}
你應該暴露在被注入的對象一個'Change'事件,並啓動它只要屬性發生變化。據我所知,沒有辦法自動完成。 – Oliver
你可以讓injectObject引發一個事件,你的someClass可以用subsribe來引用。另一種方式是通過實現[INotifyPropertyChanged](http://msdn.microsoft.com/en-us/library/System.ComponentModel.INotifyPropertyChanged.aspx) – ryadavilli
本文來自MSDN將幫助你,它解釋瞭如何實現[ **屬性更改通知**](http://msdn.microsoft.com/zh-cn/library/ms743695.aspx)。希望這可以幫助。 – Abbas