以下是一个示例代码,展示了如何将一个ObservableCollection绑定到另一个ObservableCollection中:
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows;
namespace WpfApp
{
public class Item : INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class ViewModel : INotifyPropertyChanged
{
private ObservableCollection- _items;
public ObservableCollection
- Items
{
get { return _items; }
set
{
if (_items != value)
{
_items = value;
OnPropertyChanged("Items");
}
}
}
public ObservableCollection
- AnotherItems { get; set; }
public ViewModel()
{
Items = new ObservableCollection
-
{
new Item { Name = "Item 1" },
new Item { Name = "Item 2" },
new Item { Name = "Item 3" }
};
AnotherItems = new ObservableCollection
- ();
Items.CollectionChanged += Items_CollectionChanged;
}
private void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.OldItems != null)
{
foreach (Item item in e.OldItems)
{
AnotherItems.Remove(item);
}
}
if (e.NewItems != null)
{
foreach (Item item in e.NewItems)
{
AnotherItems.Add(item);
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
}
}
在这个示例中,我们有两个ObservableCollection:Items和AnotherItems。将Items绑定到另一个ObservableCollection AnotherItems中,以实现绑定到另一个ObservableCollection的功能。
在ViewModel类中,我们在构造函数中创建了Items和AnotherItems的实例。然后,我们通过订阅Items的CollectionChanged事件来监听Items的变化。在事件处理程序中,我们根据变化来添加或删除项目。
在MainWindow中,我们将ViewModel实例设置为DataContext,以便在XAML中进行数据绑定。
请注意,这只是一个简单的示例,用于说明如何将一个ObservableCollection绑定到另一个ObservableCollection。根据实际需求,您可能需要根据自己的情况进行修改。