- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个扩展基类 ListView.ColumnHeaderCollection
(在 System.Windows.Forms
中找到)的类,我希望能够收到通知当通过 INotifyCollectionChanged 更改集合时。
到目前为止,我有:
public class MyCollection : ListView.ColumnHeaderCollection, INotifyCollectionChanged { ... }
在我的初始化方法中,我为委托(delegate)分配了我自己的方法 OnCollectionChanged()
。
UserSettings.Instance.Columns.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(OnCollectionChanged);
对于那些好奇的人,我的代表看起来像:
public void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
Settings_Save();
}
这样我们就解决了我的问题。我不知道如何实现INotifyCollectionChanged
需要的接口(interface)成员。
'_Namespace_.MyCollection' does not implement interface member 'System.Collections.Specialized.INotifyCollectionChanged.CollectionChanged'
非常感谢这位 C# 新手!
最佳答案
根据 INotifyCollectionChanged
,它需要一个名为 CollectionChanged
的公共(public)事件成员在实现类中。即:
public class MyCollection : INotifyCollectionChanged
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
// ...
}
编辑:使用 new
覆盖非虚拟属性关键词:
public class MyListView : ListView
{
public new MyCollection Columns { get; set; }
//...
}
但是你必须要小心。如果引用类型引用 ListView.Columns
,它将是与 MyCollection.Columns
不同的集合,并导致意外行为。当使用 new
覆盖基础属性时,您应该设置/获取基础属性,这会保留集合的完整性,即:
public class MyListView : ListView
{
public new MyCollection Columns
{
get
{
return base.Columns as MyCollection;
}
set
{
base.Columns = value;
}
}
}
关于c# - 实现(不处理)CollectionChanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670089/
有人可以指出实现 CollectionChanged 的示例。我正在使用 wpf mvvm 灯。我试图谷歌,没有找到任何足够好的东西。 最佳答案 public ObservableCollecti
是否有可能在 CollectionChanged 事件中获取项目的 Instance? 例如: public class Foo { public string Name { get; set
我手上有一个真正的难题。 我在我的模型中使用 ObservableCollection,它绑定(bind)到 ViewModel 中的另一个集合。这让我可以轻松地将 ViewModel 中的更改传播到
我已将 CollectionChanged eventhandler(onCollectionChanged) 添加到 ObservableCollection 属性之一。 我发现 onCollect
我正在开发一个 WPF 应用程序,发现绑定(bind)属性的属性更改通知可以从后台线程发生,但是要对 observablecollection 进行任何更改(如添加或删除项目)必须从 UI 线程发生。
我正在使用 C#/WPF 编写下载管理器,我刚遇到这个错误: This type of CollectionView does not support changes to its SourceCol
我有一个 DataGrid,它绑定(bind)到一个 ObservableCollection。我有一个动态数据列表,因此可以从列表中编辑/添加/删除项目。起初,我清除并添加了 ObservableC
我有以下界面: 当一个项目被添加到DataGrid中时,Total列将根据(价格*数量)和总TextBox更新还将添加所有行的总数。 但是,当我更改一行的数量时,Total 列 会更新,但总计 Tex
如何从任何 LayoutControl 的子级获取 ItemAdded、ItemRemoved 通知? 假设我们有 Grid 控件。如果我在 Grid 中添加新的 TextBlock 控件,那么它应该
我在 WPF 应用程序中有一个数据网格,它像这样绑定(bind)到 ObservableCollection 我的数据显示正常,我可以编辑网格中的数据,但是当我手动编辑网格中的数据时,它不会触发 P
好的,我进行了搜索,但没有找到任何解决方案,所以我开始了。我有一个 public ObservableCollection Items { get; set;}不会更新 MonoDroid 中的 UI
我有ObservableCollection集合,我想用新的元素集合替换所有元素,我可以这样做: collection.Clear(); 或: collection.ClearItems(); (顺便
这是解释我的问题的基本示例。假设我有 ObservableCollection Numbers {get; set;} 和一个返回数字总和的 IValueConverter。 通常我要做的是将 IVa
我想监视对 CollectionView 的更改,但 CollectionChanged 事件受到保护。我该怎么做?当然必须有一种方法来订阅这个事件——列表控件必须以某种方式做到这一点。 我可以将 S
我有一个自定义列表,如下所示: public class MyCollection : ICollection, ISupportInc
在我的类(class)中,我有一个 ObservableCollection,我正在监听它的 CollectionChanged 事件。事情是当我做 Fou.ButtonData = an Obser
我创建了一个扩展基类 ListView.ColumnHeaderCollection(在 System.Windows.Forms 中找到)的类,我希望能够收到通知当通过 INotifyCollect
在我的模型中,我需要知道特定集合何时发生更改,因此我订阅了 ObservableCollection 的 CollectionChanged 事件。除了该操作相当耗费资源外,它工作得非常好。 所以当客
我想知道是否有必要检查 NotifyCollectionChangedAction NotifyCollectionChangedEventArgs 的枚举, 当订阅 CollectionChange
SelectedObjects.CollectionChanged += (s, e) => { Console.WriteLine(e.NewItems.Count);//prints ou
我是一名优秀的程序员,十分优秀!