GVKun编程网logo

ObservableCollection.Clear()报错(clearcase object not found)

10

针对ObservableCollection.Clear()报错和clearcaseobjectnotfound这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.net–Observable

针对ObservableCollection.Clear()报错clearcase object not found这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.net – Observable Collections Collection已更改、.net 中的 ObservableCollection 有什么用?、C# ObservableCollection两个字段排序的情况、C# ObservableCollection集合排序等相关知识,希望可以帮助到你。

本文目录一览:

ObservableCollection.Clear()报错(clearcase object not found)

ObservableCollection.Clear()报错(clearcase object not found)

cmbGroup.Items.Clear(); doesn't work. 

Haven't tried the other solutions because the problem was another.

Anytime the selection of cmbGroup changes,an event is fired causing an update to another comboBox.

The other comboBox then reads out the selected items of cmbGroup and applies some data of the selected item to itself. But if the selected item == null then nothing can be read out. That was the NullReferenceException :( Anyway thank you for your help!

.net – Observable Collections Collection已更改

.net – Observable Collections Collection已更改

快速观察可观察的集合.我一直在玩Silverlight中的这些东西做一些有约束力的东西,你有什么.看起来像CollectionChanged事件在从集合中删除或添加时会触发.当我在集合中的一个类上更改属性时,我想要触发一些东西. collection属性本身已经有了RaisePropertyChanged.我是否需要对类型类本身做一些特殊操作?所以,如果我有这个:

ObservabelCollection<Person> personcollection... and if I change a property like:

Person p = personcollection.where(e => e.FirstName == "Joey").FirstOrDefault();
if (p != null) { p.FirstName = "Joe"; }

我希望在UI中发生一些事情,但没有任何改变.

任何帮助将不胜感激.

大卫

解决方法

我看到你正在尝试做什么但是如果我正确的Observable Collection只会在它的集合中的项目发生变化时引发INotifyCollectionChanged事件.这将触发UI中的更改.

它并不关心它的集合中某个对象的属性是否发生变化.您需要在这些对象的属性上实现INotifyPropertyChanged接口以触发对UI的更改.

我读了here,给了我一些有用的见解.虽然它针对WPF,但大多数仍然适用,因为Silverlight本质上是WPF的一个子集.

以及这篇MSDN文章,其中指出:

In particular,if you are using OneWay or TwoWay (for example,you want your UI to update when the source properties change dynamically),you must implement a suitable property changed notification mechanism 
 such as the INotifyPropertyChanged interface.

.net 中的 ObservableCollection 有什么用?

.net 中的 ObservableCollection 有什么用?

.net 中的 ObservableCollection 有什么用?

答案1

小编典典

ObservableCollection 是一个集合,它允许集合外部的代码知道何时对集合进行更改(添加、移动、删除)。它在 WPF 和
Silverlight
中被大量使用,但它的使用不仅限于此。代码可以添加事件处理程序以查看集合何时发生更改,然后通过事件处理程序做出反应以进行一些额外的处理。这可能是更改 UI
或执行一些其他操作。

下面的代码实际上并没有做任何事情,而是演示了如何在类中附加处理程序,然后使用事件参数以某种方式对更改做出反应。WPF 已经有许多操作,例如刷新内置的
UI,因此您可以在使用 ObservableCollections 时免费获得它们

class Handler{    private ObservableCollection<string> collection;    public Handler()    {        collection = new ObservableCollection<string>();        collection.CollectionChanged += HandleChange;    }    private void HandleChange(object sender, NotifyCollectionChangedEventArgs e)    {        foreach (var x in e.NewItems)        {            // do something        }        foreach (var y in e.OldItems)        {            //do something        }        if (e.Action == NotifyCollectionChangedAction.Move)        {            //do something        }    }}

C# ObservableCollection两个字段排序的情况

C# ObservableCollection两个字段排序的情况

相对于System.Linq的OrderBy及OrderByDescending方法,调用后产生IOrderedEnumberable对象,这个对象为排序后的返回值,但原对象未发生变化。

试想,有这种需求,ObservableCollection调用排序方法后,此对象也跟着排序,怎么做呢?只能自己写个扩展方法了,方法内使用的冒泡排序算法,非常简单,当然使用是更简单、方便了。

注意:将方法写为扩展方法更方便:

class Student

{

int id;

string name;

}

ObservableCollection listDatas=new ObservableCollection<Student>();

listData .Add(new Student(){id=2,name="xiaoming"};

listData.Add(new Student(){id=1,name="李华"};

listData.Add(new Student(){id=3,name="张度"};

listDatas.OrderBy(cu=>cu.id,true);//按ID升序排序

listDatas.OrderBy(cu=>cu.id,false);//按ID降序排序

listDatas.OrderBy(cu=>cu.name,false);//按名称升序排序 

listDatas..ThenBy(x => x.name)//按名称升序排序 (只有ID相同的情况下,按name升序排序)          

C# ObservableCollection集合排序

C# ObservableCollection集合排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BYH371256/article/details/83346807
注意:ObservableCollection集合 直接使用OrderBy 等函数排序,有问题的,排序不改变,可以转成List在进行排序

命名空间:System.Collections.ObjectModle

在WPF中,绑定列表List,数据更新后不会通知界面更新,要使用ObservableCollection集合,当数据发生改变就通知界面改变;

解决方法一:List列表转为ObservableCollection集合

private ObservableCollection<BaseSignalViewModel> children = new ObservableCollection<BaseSignalViewModel>();
public ObservableCollection<BaseSignalViewModel> Children
{
get { return children; }
set
{
children = value;
NotifyOfPropertyChange(() => Children);
}
}

List<BaseSignalViewModel> listChild = CurrentSignal.Children.ToList();
listChild.Sort(delegate(BaseSignalViewModel p1, BaseSignalViewModel p2) { return Comparer<string>.Default.Compare(p1.Index.ToString(), p2.Index.ToString()); });
//List列表转为ObservableCollection集合
CurrentSignal.Children = new ObservableCollection<BaseSignalViewModel>(listChild);
 
---------------------
作者:Kaivin.bao
来源:CSDN
原文:https://blog.csdn.net/byh371256/article/details/83346807
版权声明:本文为博主原创文章,转载请附上博文链接!

今天关于ObservableCollection.Clear()报错clearcase object not found的讲解已经结束,谢谢您的阅读,如果想了解更多关于.net – Observable Collections Collection已更改、.net 中的 ObservableCollection 有什么用?、C# ObservableCollection两个字段排序的情况、C# ObservableCollection集合排序的相关知识,请在本站搜索。

本文标签: