在WPF面板中添加/删除子项时收到通知,可以通过以下方法实现:
ObservableCollection
:ObservableCollection
是一个集合类,当集合发生更改时,它会自动通知UI更新。因此,当子项被添加或删除时,UI会自动更新。public class MyViewModel
{
public ObservableCollection<MyItem> Items { get; set; }
public MyViewModel()
{
Items = new ObservableCollection<MyItem>();
}
public void AddItem(MyItem item)
{
Items.Add(item);
}
public void RemoveItem(MyItem item)
{
Items.Remove(item);
}
}
INotifyCollectionChanged
接口:如果你的集合类实现了INotifyCollectionChanged
接口,那么当集合发生更改时,它会触发CollectionChanged
事件。你可以订阅这个事件,以便在子项被添加或删除时收到通知。public class MyViewModel
{
public ObservableCollection<MyItem> Items { get; set; }
public MyViewModel()
{
Items = new ObservableCollection<MyItem>();
Items.CollectionChanged += Items_CollectionChanged;
}
private void Items_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// 在这里处理添加或删除子项的通知
}
public void AddItem(MyItem item)
{
Items.Add(item);
}
public void RemoveItem(MyItem item)
{
Items.Remove(item);
}
}
INotifyPropertyChanged
接口:如果你的子项类实现了INotifyPropertyChanged
接口,那么当子项发生更改时,它会触发PropertyChanged
事件。你可以订阅这个事件,以便在子项被添加或删除时收到通知。public class MyItem : INotifyPropertyChanged
{
// 实现INotifyPropertyChanged接口的代码
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class MyViewModel
{
public ObservableCollection<MyItem> Items { get; set; }
public MyViewModel()
{
Items = new ObservableCollection<MyItem>();
}
public void AddItem(MyItem item)
{
item.PropertyChanged += Item_PropertyChanged;
Items.Add(item);
}
public void RemoveItem(MyItem item)
{
item.PropertyChanged -= Item_PropertyChanged;
Items.Remove(item);
}
private void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
// 在这里处理子项属性更改的通知
}
}
通过以上方法,你可以在WPF面板中添加/删除子项时收到通知。
领取专属 10元无门槛券
手把手带您无忧上云