- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的 WPF 应用程序中,我有一个 XamDataGrid。网格绑定(bind)到 ObservableCollection。我需要允许用户通过网格插入新行,但事实证明,为了使“添加新行”行可用,xamDataGrid 的源需要实现 IBindingList。 ObservableCollection 不实现该接口(interface)。
如果我将源更改为 BindingList,它就可以正常工作。但是,据我阅读本主题的了解,BindingList 实际上是一个 WinForms 的东西,在 WPF 中没有得到完全支持。
如果我将所有 ObservableCollections 更改为 BindingLists 会不会出错?关于如何在将源保留为 ObservableCollection 的同时为我的 xamDataGrid 添加新行功能,有人有任何其他建议吗?据我了解,有许多不同的网格需要实现 IBindingList 以支持添加新行功能,但我看到的大多数解决方案只是切换到 BindingList。
谢谢。
最佳答案
IBindingList接口(interface)和BindingList类在 System.ComponentModel 命名空间中定义,因此与 Windows Forms 不严格相关。
你有没有检查过xamGrid支持绑定(bind)到 ICollectionView资源?如果是这样,您可以使用此接口(interface)公开您的数据源并使用 BindingListCollectionView 支持它。 .
您还可以创建 ObservableCollection<T>
的子类并实现 IBindingList 接口(interface):
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Collections.ObjectModel;
public class ObservableBindingList<T> : ObservableCollection<T>, IBindingList
{
// Constructors
public ObservableBindingList() : base()
{
}
public ObservableBindingList(IEnumerable<T> collection) : base(collection)
{
}
public ObservableBindingList(List<T> list) : base(list)
{
}
// IBindingList Implementation
public void AddIndex(PropertyDescriptor property)
{
throw new NotImplementedException();
}
public object AddNew()
{
throw new NotImplementedException();
}
public bool AllowEdit
{
get { throw new NotImplementedException(); }
}
public bool AllowNew
{
get { throw new NotImplementedException(); }
}
public bool AllowRemove
{
get { throw new NotImplementedException(); }
}
public void ApplySort(PropertyDescriptor property, ListSortDirection direction)
{
throw new NotImplementedException();
}
public int Find(PropertyDescriptor property, object key)
{
throw new NotImplementedException();
}
public bool IsSorted
{
get { throw new NotImplementedException(); }
}
public event ListChangedEventHandler ListChanged;
public void RemoveIndex(PropertyDescriptor property)
{
throw new NotImplementedException();
}
public void RemoveSort()
{
throw new NotImplementedException();
}
public ListSortDirection SortDirection
{
get { throw new NotImplementedException(); }
}
public PropertyDescriptor SortProperty
{
get { throw new NotImplementedException(); }
}
public bool SupportsChangeNotification
{
get { throw new NotImplementedException(); }
}
public bool SupportsSearching
{
get { throw new NotImplementedException(); }
}
public bool SupportsSorting
{
get { throw new NotImplementedException(); }
}
}
或者,您可以子类化 BindingList<T>
并实现 INotifyCollectionChanged界面。
关于c# - WPF ObservableCollection<T> 与 BindingList<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6254441/
我有一个事件的绑定(bind)列表,每个事件都有一个 BuyOrders 的绑定(bind)列表 bindingListActivty.Select(k => k._dataGridViewId ==
是否可以将我的类的属性名称映射到 UltraGrid 控件的列名称? MyClass 是例如一个用户类: class User { public int Id { get; set;
基本上我有一个具有以下签名的方法: public void Save(BindingList items); 我正在尝试使用 调用它 classInstance.Save(items); //item
我有一个看似简单的问题,我希望协调两个列表,以便“旧”主列表由包含更新元素的"new"列表更新。元素由键属性表示。这些是我的要求: 仅当任何属性发生更改时,任一列表中具有相同键的所有元素都会导致将"n
有没有一种简单的方法来创建一个 BindingList 包装器(带投影),它会随着原始列表的更新而更新? 例如,假设我有一个可变的数字列表,我想在 ComboBox 中将它们表示为十六进制字符串。使用
我已经填写了绑定(bind)列表 所以我想尽快清除它 所以我有至少有 2000 项的绑定(bind)列表 什么是最好的方法? 最佳答案 你应该使用: myBindingList.Clear() 如 t
将数组转换为 BindingList 的最简单和最快的方法是什么? 最佳答案 使用 BindingList采用 IList 的构造函数. var binding = new BindingList(m
我一直在尝试寻找问题的可能原因,但似乎找不到: 错误: System.NotSupportedException: Collection is read-only. at System.ThrowHe
我不明白如何克隆 BindingList . 我想创建一个不共享相同引用的现有列表的新副本。另一个复杂情况是我的对象本身包含一个嵌套的 BindingList . 我尝试了构造函数方法: Bindin
myGenericList.RemoveAll(x => (x.StudentName == "bad student")); 效果很好,但绑定(bind)列表没有此方法。如何为绑定(bind)列表创
我的类有一个 BindingList,我想在其中使用它的属性填充 ComboBox,这样当我的列表更改时,ComboBox 也会更改。 public class UserAccess { pu
复制 BindingList 的最佳方法是什么? 只使用 ForEach()?或者有更好的方法吗? 最佳答案 BindingList 有一个可以接受 IList 的构造函数。而 BindingList
我正在尝试了解更多有关 BindingList 的信息,因为我相信它会对我正在进行的项目有所帮助。 目前,我有一个对象类 (ScannedImage),它是类 (HashedImage) 的子类型,该
我有一个绑定(bind)到 BindingList 的 DevExpress GridControl。我使用了 BindingList,以便更改自动应用到绑定(bind)控件。 当我从列表中添加或删除
我有一个 C# WinForms 应用程序,其中包含一个 BindingList,其中填充了像这样的小部件对象: BindingList widgetsList = new BindingList()
有没有办法强制 BindingList 排序(在单元测试中)?根据documentation ,方法 ApplySortCore 被标记为 protected ,但绑定(bind)控件必须通过某种方式
我正在使用 BindingList填充一些控件。 在表单的一部分,我需要使用存储在 BindingList 中的一些数据创建和排列。假设我有 BindingList并想检索所有 CEmployee.S
BindingList有没有去除重复元素的方案?我试过: BindingList accounts = new BindingList(); accounts.add(new Account("u
刚学C#/.NET就遇到了这个问题。 所以在我的解决方案中,我有 2 个项目:winforms UI 和带有逻辑的 dll。在 dll 中,我有 BindingList,它为 UI 中的列表框提供数据
我有一个异步 BindingList,其中包含在工作线程上操作并绑定(bind)到主 UI 线程上的 BindingSource 以及绑定(bind)到 DataGridView 的 BindingS
我是一名优秀的程序员,十分优秀!