2
您好我正在嘗試一些方法來做到這一點,但要麼不成功,要麼不理想。我只想 捕獲集合中任何項目的PropertyChanged事件。我已經手動有線它的那一刻 ,但我不知道是否有一個更優雅的解決方案:WPF Catch ObservableCollection的項目屬性更改
public class Item : INotifyPropertyChanged
{
...
public delegate void MyPropertyChangedHandler(object sender, PropertyChangedEventArgs e);
public event MyPropertyChangedHandler MyPropertyChanged;
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private void OnPropertyChanged(string propertyName)
{
PropertyChangedEventArgs args = new PropertyChangedEventArgs(propertyName);
PropertyChanged(this, args);
if (MyPropertyChanged != null) MyPropertyChanged(this, args);
}
...
}
public class ItemCollection : ObservableCollection<Item>
{
...
public delegate void MyPropertyChangedHandler(object sender, PropertyChangedEventArgs e);
public event MyPropertyChangedHandler MyPropertyChanged;
protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach (Item item in e.NewItems)
{
item.MyPropertyChanged += new Item.MyPropertyChangedHandler(item_MyPropertyChanged);
}
}
base.OnCollectionChanged(e);
}
void item_MyPropertyChanged(object sender, PropertyChangedEventArgs e)
{
MyPropertyChanged(sender, e);
}
...
}
然後,我可以很容易地連接到集合的MyPropertyChanged事件和它的作品很好,但更優雅的人?你幾乎做
在此先感謝
感謝和好的來電 – 2011-04-26 22:02:35
@infensus樂於幫助 – 2011-04-26 22:08:49