如何实现INotifyCollectionChanged接口?

Hui Liu-MSFT 48,681 信誉分 Microsoft 外部员工
2024-06-13T07:44:36.9+00:00

我将 List<int> 分配给 ListBox 的 ItemsSource,并且窗体继承了 INotifyCollectionChanged 接口。但是,当我删除 List<int> 中的值时,CollectionChanged 事件将为 null。如何实现此接口?

我的代码示例:


private List<int> myin = new List<int>();
public event NotifyCollectionChangedEventHandler CollectionChanged;

private void Button_Click(object sender, RoutedEventArgs e)
{
    myin.Remove(34);
    if (CollectionChanged != null) CollectionChanged(this,
        new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove,myin));
}

//initalize List<int> and binding to ListBox.ItemsSource.
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    for(int i = 0; i < 100; i++)
    {
        myin.Add(i);
    }
    lis.ItemsSource = myin;
}

Note:此问题总结整理于:How to implement the INotifyCollectionChanged interface?

开发人员技术 | Windows Presentation Foundation
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. 匿名
    2024-06-13T08:20:27.9633333+00:00

    请用于替换 ,WPF 提供了 ObservableCollection<T> 类,该类是实现接口的数据集合的内置实现。 请更新您的和:ObservableCollectionListINotifyCollectionChangedmyinButton_Click

     ObservableCollection<int> myin = new ObservableCollection<int>();  
            private void Button_Click(object sender, RoutedEventArgs e)  
            {  
                myin.Remove(34);  
            }  
    

    然后,您的演示将按如下方式工作: 96938-3.gif


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。