XMLSerialize一个可观察的集合
我在可观察的集合的XML序列化中遇到了问题. 这是我序列化的: public enum Status { Pending, Active, Completed, Cancelled } public abstract class Entity : INotifyPropertyChanged { ... } public class UserStory : Entity { public uint StoryID { get; set; } public Status Status { get; set; } ... public ObservableCollection Tasks { get; set; } } public class Task : Entity { public uint TaskID { get; set; } ... } 这是我序列化的方式: public stat
4 2024-01-07
编程技术问答社区
在.NET 4中是否有一个线程安全的Observable集合?
平台:WPF, .NET 4.0, C# 4.0 问题:在mainwindow.xaml中,我有一个绑定到客户集合的列表箱,该框当前是observableCollection . ObservableCollection c = new ObservableCollection(); 可以通过多个来源更新此集合,例如文件系统,WebService等. 为了允许客户的并行加载,我创建了一个助手类 public class CustomerManager(ref ObsevableCollection cust) 在内部为每个客户源催生一个新任务(从并行扩展库),并将一个新的客户实例添加到客户收集对象中(由Ref将其传递给其CTOR). 问题在于,观察到(或该问题的任何集合)不能从UI线程以外的其他呼叫中使用,并且遇到了例外: " notsupportedException - 这种类
0 2024-01-07
编程技术问答社区
手动对ObservableCollection<>进行排序
我在班上有ObservableCollection,我将数据绑定到我的listbox中,在我的Windows phone 7应用程序中使用该集合 public ObservableCollection myList = new ObservableCollection(); 我的自定义类 public class CustomClass { public string Id { get; set; } public string Name { get; set; } public string EventName { get; set; } public string EventDate get { return EventDate; } set { if (value != null) { DateTime eventDate =
4 2024-01-07
编程技术问答社区
.NET 4.0索引器与可观察集合
使用索引器观察到的.NET C#语法是什么?我想要一个观察力卷,并通过序列位置或字符串名称参考项目.我知道您用它来表示索引器,但我不知道如何将其放入观察力.谢谢 感谢您的4个答案.我知道如何创建和观察到索引,并且知道如何创建索引器.我不知道如何结合它们.我要求使用序列和字符串索引的观察力销售示例代码. 再次感谢 解决方案 观察收藏的observableCollection从集合继承,因此它已经具有基于位置的索引. 对于基于字符串的索引,您可以研究"观察者"的实现. 就个人而言,为了获得更好的性能,我创建了一个hashedobservablecollection,该hashedobservablecollection衍生自observableCollection,其中包含一个键索引以加快查找时间的字典.通过覆盖插入,删除键和clearitem,您可以将字典保持同步. 在我的示例中,键可以是任何类型的键,但是我们假设键永远不会更改 - 如果更换项目,则用相同的
2 2024-01-07
编程技术问答社区
用ObservableCollection订阅CollectionChanged事件
当我创建ObservableCollection时,添加或删除时如何运行其他逻辑? Public Property Employees As ObservableCollection(Of employee) Get If _employees Is Nothing Then _employees = New ObservableCollection(Of employee) AddHandler _employees.CollectionChanged, AddressOf OnEmployeesChanged End If Return _employees End Get Set(ByVal value As ObservableCollection(Of employee)) _employees = value End Set
0 2024-01-07
编程技术问答社区
从另一个集合中更新一个集合的有效方法
是从另一个(基于同一班级)更新ObservableCollection的以下方法是否足够好,或者最好以另一种方式完成(或者只是要改进)? foreach (MyEntity c in collection2) { collection1.Where(p => p.EntID == c.EntID).FirstOrDefault().Field1 = c.Field1; collection1.Where(p => p.EntID == c.EntID).FirstOrDefault().Field2 = c.Field2; ... collection1.Where(p => p.EntID == c.EntID).FirstOrDefault().FieldN = c.FieldN; } EntID是主要键. (在足够好的情况下,我的意思是快速有效). 解决方案 var
4 2024-01-06
编程技术问答社区
为什么ObservableCollection<T>实现了INotifyPropertyChanged?
在.net 4.0中,没有由ObservableCollection定义的单个属性覆盖其父或接口的任何属性.那么为什么ObservableCollection实现INotifyPropertyChanged? 我能想到的一个原因是,它使子类更容易定义自己的属性并使用OnPropertyChanged方法OnPropertyChanged方法.但这是主要原因吗? 解决方案 属性的Item,Items和Count,仅Item实际上有一个设置器,因此无需覆盖Items或Count,因为您无法设置他们,无需从中提出活动.它们只能响应其他一些方法(例如Add或Remove)和这些方法会引发必要的属性更改的事件(实际上,如果您查看源t覆盖了这些方法,而是覆盖protected在基类中Add和Remove调用的方法). 现在,对于Item,该属性不是Overriden,但是如果您查看 source 对于SetItem方法: /// /// Ca
2 2024-01-06
编程技术问答社区
在一个可观察的集合中找到一个索引
这可能非常简单,但我无法提出解决方案. 我有一个: ObservableCollection _collection = new ObservableCollection(); 这个集合填充了许多ProcessModel. 我的问题是我有一个processModel,我想在_ collection中找到. 我想这样做,这样我就可以找到_票房中processModel在哪里的索引,我真的不确定如何做到这一点. 我想这样做,因为我想在observableCollection(_Collection)中获得ProcessModel n+1. 解决方案 var x = _collection[(_collection.IndexOf(ProcessItem) + 1)]; 其他解决方案 http://msdn.microsoft/library/ms132410.aspx 使用:
6 2024-01-06
编程技术问答社区
替代ObservableCollection?
我正在寻找ObservableCollection的替代品,即线程安全,在UI线程上提出事件,最好使用AddRange方法.我已经看到了一些在这里和其他地方发布的实现,但是我更喜欢经过测试和验证的实施,我不必维护自己. 那么,有人可以将我指向这样的替代品,可通过nuget提供? 解决方案 有关线程安全收集的其他解决方案 您可以尝试使用 bulkobservablecollection 来自Microsoft,来自Microsoft,来自Microsoft,尽管我不确定为什么他们将其放在如此奇怪的名称空间中!当我尝试在VS2012中尝试"添加参考..."时,没有看到它列出的,必须手动浏览到C:\ Windows \ Microsoft.net \ Assembly \ gac_msil 其他解决方案 您可以在此处尝试: http://deanchalk.com/2010/02/01/thread-safe-dispatcher-safe-observable-
0 2024-01-06
编程技术问答社区
防止在ObservableCollection.CollectionChanged事件中添加新项目
我需要检查一些条件,然后决定将新项目添加到我的收藏中,无论如何我是否可以防止在收集变化的事件中添加,还是在此时为时已晚?实际上,我可以修改新项目,但由于运行时异常而无法从NewItems集合中删除它: protected void MyFilter(object sender, NotifyCollectionChangedEventArgs e) { f (e.Action == NotifyCollectionChangedAction.Add) { foreach (Item item in e.NewItems) { if (!Item.CanBeAdded()) { //Prevent adding the Item !
0 2024-01-06
编程技术问答社区
从ViewModel中的Observable集合中删除并不更新视图,但对现有项目的更新会更新视图
我敢肯定,这对某人来说是一个灌篮... 手指交叉 我的listView itemsSource被绑定到我的ViewModel上的属性,名为Tileitems. 完美填充列表视图更新. 在ViewModel中,您可以看到" astartileitem.transaction = e.transaction". . .单个ListView项目完美更新. 在ViewModel中,您可以看到" Me.tileitems.Remove(asuthtileitem)" ...该项目未从视图中删除.它确实从me.tileitems集合中成功删除,但是在视图中没有描述更新. 附加信息:AbstractViewModel实现了Inotification Propertychanged,我尝试在Tileitem中覆盖平均值而不是覆盖它,并且围绕着相同的结果.我已经看过 this ://stackoverflow.com/questions/8555729/observablec
2 2024-01-06
编程技术问答社区
WPF和ObservableCollection<T>。
我有一个我要显示的ObservableCollection - IRuleCondition接口由我要显示的2个不同类别,仅显示一个规则条件(例如优先级,属性,要检查的属性)依此类推)和RuleConditionGroup,可以包含2个或更多RuleConditions,以使任何条件都可以匹配或全部等等. . 在XAML中,我想知道是否有一种方法可以显示不同的ListView.ItemTemplate,具体取决于它在ObservableCollection中遇到的类型?还是我需要实现两个不同的ObservableCollection? 解决方案 这是一个简单的示例,说明了它的工作原理 这就是对象的定义 public interface Person { string Name { get; set; } } public class Manager : Person { publ
0 2024-01-05
编程技术问答社区
当ObservableCollection发生变化时,重新评估LINQ查询
我有一个共同的问题,我想(希望)找到一个更好的解决方案.我有一个包含数据主列表的ObservableCollection.在我的客户端代码中,我需要将数据"转换"成新的表单,以显示向用户显示.我使用的是: var newList = (from item in observable select new { FirstInitial = item.Name[0] }); 我知道这很基本,但足以证明问题. (请注意投影,这不是一个简单的过滤器或分组语句.)然后,我通过数据结合在我的UI中显示新清单. 问题是,当原始集合更改时,UI不会.到目前为止,我应用的解决方案是将事件处理程序附加到原始集合的汇编事件上,该事件重新评估了查询并更新了绑定的属性. 虽然可以正常工作,但每次我在这种情况下运行时都会有很多重复的代码.有没有一种方法可以让Linq查询返回观察力汇票,该观察力汇总在更改源可观察到的源时"自动"更新? 换句话说,我想实现一些"
0 2024-01-05
编程技术问答社区
当使用ObservableCollection<T>时,我是否还需要在T类型上实现INotifyPropertyChanged?
MSDN参考页面的MSDN参考页面/a>注意: "您的集合中的对象必须满足 由于ObservableCollection已经实现了INotifyPropertyChanged,为什么我需要再次实现INotifyPropertyChanged on T也需要? 解决方案 将您可观察到的集合作为表的数据源.该集合中的每个对象均占据一行,并在表中跨多列显示. 视图(即您的表)需要知道何时修改每个单元格,以响应对象的变化属性,还需要响应添加和从集合中添加和删除对象. 您可观察的收集会处理处理表行:当对象被插入,删除,移动等时,它会通知其观察者.但是,它缺乏对单个对象发生的事情的了解,因此对处理表列. 没有帮助. 这是您的对象所处的位置:通过实现INotifyPropertyChanged他们让您的表管理列中的数据. 其他解决方案 INotifyPropertyChanged需要由其属性正在变化的对象提高. ObservableCollection
2 2024-01-05
编程技术问答社区
为什么ObservableCollection没有一个RemoveAll方法?
为什么ObservableCollection没有像List那样的RemoveAll方法? 我已经实现了扩展方法来向ObservableCollection提供此功能,但是我想了解是否存在不提供此功能的特定原因. 由于收集变化,它可能会以某种方式影响数据绑定吗? this 确实指定了一些可能在使用ObservableCollections时会出错的事情这个问题. 解决方案 它确实具有Clear()方法可以删除可以使用的所有项目. 如果我不得不猜测他们为什么使用Clear而不是RemoveAll,我认为这是因为RemoveAll提出了您正在从收藏中删除物品的建议,而Clear则告诉您的项目只是被清除. 这对提出的CollectionChanged通知的类型有所不同. Clear()提出NotifyCollectionChangedAction.Reset事件,并且不包括事件中的删除项目,而Remove则提出NotifyCollectionChangedAct
4 2024-01-05
编程技术问答社区
将多个可观察集合绑定到一个可观察集合上
有一堆ObservableCollection Result,需要将它们全部组合到另一个ObservableCollection AllResults中,以便我可以在listview中显示. 只是不确定如何将它们全部结合在一起. 我创建了一个新课程来组合它们,但不确定它们在我获得列表后如何更新...所以不确定要采取哪个方向. 我知道INotifyPropertyChanged我只是不确定如何将它们结合在一起并随着一切的变化而继续进行更新. 解决方案 .net具有 CompositeCollection 允许您将多个收藏视为一个集合.它实现了INotifyCollectionChanged,因此,只要您的内部集合也实现INotifyCollectionChanged(在您的情况下,您确实可以这样做),您的绑定应该无问题. 用法示例: CompositeCollection cc = new CompositeColl
4 2024-01-05
编程技术问答社区
为什么像BindingList或ObservableCollection这样的类不是线程安全的?
一次又一次,我发现自己必须编写bindingList和observableCollection的线程安全版本,因为当绑定到UI时,这些控件无法从多个线程更改.我想了解的是为什么是这种情况 - 是设计故障还是有意的? 解决方案 问题是设计线程安全收集并不简单.当然,可以简单地设计一个可以从多个线程进行修改/读取而不会损坏状态的集合.但是,考虑到多个线程更新,设计一个可用的集合要困难得多.以以下代码为例. if ( myCollection.Count > 0 ) { var x = myCollection[0]; } 假设MyCollection是一个线程安全集合,在该集合中,添加和更新可以保证不会损坏状态.此代码不是线程安全的,并且是种族条件. 为什么?即使MyCollection是安全的,也不能保证两种方法调用mycollection:命名为计数和索引器.另一个线程可以进来并删除这些调用之间的所有元素. 这种类型的问题使使用这种类型的集合坦率地说,一
8 2024-01-04
编程技术问答社区