0

我的项目是

第 1 步:创建一个 C# 控制台应用程序,该应用程序应创建一个 String 类型的列表并添加 item1、item 2 和 item 3。

第 2 步:创建 String 类型的 Collection 并复制这些项目。

第 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();
        }
    }

现在,如果列表中发生更改,它将如何反映在集合对象中?

4

1 回答 1

2

尝试使用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);
            }
        };
于 2013-01-16T11:07:42.237 回答