我的项目
步骤1:创建一个C#控制台应用程序,该应用程序应创建一个String类型列表并添加item1,item 2和item 3.
步骤2:创建String类型的集合并复制这些项目。
步骤3:如果List对象发生任何变化,它应该反映在Collection对象中。
我成功完成了第2步,我的代码是
class Program
{
static void Main(string[] args)
{
List<string> newList = new List<string>();
newList.Add("Item 1");
newList.Add("Item 2");
newList.Add("Item 3");
Collection<string> newColl = new Collection<string>();
foreach (string item in newList)
{
newColl.Add(item);
}
Console.WriteLine("The items in the collection are");
foreach (string item in newColl)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
现在,如果列表中发生了更改,它将如何反映在集合对象中?
答案 0 :(得分:3)
尝试使用ObservableCollection代替List<string>
并订阅活动CollectionChanged
。这是非常天真的实现只是为了给出一般的想法。您应该添加参数检查或执行其他类型的同步,因为您没有说明应在Collection
ObservableCollection<string> newList = new ObservableCollection<string>();
newList.Add("Item 1");
newList.Add("Item 2");
newList.Add("Item 3");
Collection<string> newColl = new Collection<string>();
newList.CollectionChanged += (sender, args) =>
{
foreach (var newItem in args.NewItems)
{
newColl.Add(newItem);
}
foreach (var removedItem in args.OldItems)
{
newColl.Remove(removedItem);
}
};