gpt4 book ai didi

c# - ObservableCollection PropertyChanged 事件

转载 作者:太空狗 更新时间:2023-10-29 18:11:34 25 4
gpt4 key购买 nike

我想子类化 ObservableCollection 以向其添加属性。不幸的是,PropertyChanged 事件受到保护。基本上,我想将它子类化为一个 SelectedItem,我可以绑定(bind)到我的 MVVM WPF 应用程序中的列表。

这是我类(class)的框架:

public class SelectableList<T> : ObservableCollection<T>
{
public T SelectedItem {get;set;}
}

但我不能执行以下操作:

SelectableList<int> intList = new SelectableList<int>();
intList.PropertyChanged += new PropertyChangedEventHandler(intList_Changed);

因为访问限制。这使我提出一个更深层次的问题。 UI 如何通知 PropertyChanged 事件(例如 Count 属性)?请注意,我不能在代码隐藏中执行此操作。

我头晕,谁能教教我?

最佳答案

SelectableList<int> intList = new SelectableList<int>();
((INotifyPropertyChanged)intList).PropertyChanged +=
new PropertyChangedEventHandler(intList_Changed);

Observable 集合 implements INotifyPropertyChanged explicitly ,这意味着您必须先将实例转换为接口(interface),然后才能访问接口(interface)的方法、属性和事件。至于为什么这样做,我不知道。 Binding markup extensio n 不“知道”ObservableCollections 或任何其他类型。它检查类型以查看它们是否实现或扩展特定接口(interface)/基类(INPC、INCC、DependencyObject 等),因此不关心接口(interface)是否被显式实现。

关于c# - ObservableCollection PropertyChanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1003344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com