Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Listview 在WinRT中排序可观察集合时出现问题_Listview_C# 4.0_Windows Runtime_Winrt Xaml_Observablecollection - Fatal编程技术网

Listview 在WinRT中排序可观察集合时出现问题

Listview 在WinRT中排序可观察集合时出现问题,listview,c#-4.0,windows-runtime,winrt-xaml,observablecollection,Listview,C# 4.0,Windows Runtime,Winrt Xaml,Observablecollection,我需要按照xaml winRT中的starttime对包含会议的列表视图进行排序。 我正在将会议列表绑定到UI。 我们无法在WinRT中使用排序描述,因此我尝试对会议模型的ObservableCollection进行排序。 这是我的密码: myMeetings.xaml: <ListView x:Name="myMeetingsList" ItemsSource="{Binding SortedData}".... a.startTime)); }

我需要按照xaml winRT中的starttime对包含会议的列表视图进行排序。 我正在将会议列表绑定到UI。 我们无法在WinRT中使用排序描述,因此我尝试对会议模型的ObservableCollection进行排序。 这是我的密码:

myMeetings.xaml:

<ListView x:Name="myMeetingsList"    
                ItemsSource="{Binding SortedData}"....
a.startTime));
}
当我试图显示已排序的会议列表时,它不会显示任何内容。
我一定是做错了什么。任何建议???

您需要确定属性
SortedItems
已更改。您需要引发
NotifyPropertyChanged
事件。否则,引擎不知道您已将列表更改为新实例


或者,将新排序的项目复制到新清除的
\u sortedData
实例中。只是不要创建一个全新的实例

您不希望SortDescriptions是WinRT CollectionViewSource的一部分吗?哦,伙计,我喜欢。过滤器和组也是如此。但是,没有必要这样说;事实就是这样

对ObservableCollection进行排序就像对其他任何内容进行排序一样,只是您需要确保不重置集合的值,而只重置集合的成员。像这样:

var o = new ObservableCollection<int>();

// fill collection ascending
var n = Enumerable.Range(1, 50);
foreach (var item in n)
    o.Add(item);

n = n.Reverse();
// fill collection descending
o.Clear();
foreach (var item in n)
    o.Add(item);
var o=新的ObservableCollection();
//按升序填充集合
var n=可枚举范围(1,50);
foreach(n中的var项)
o、 增加(项目);
n=n.反向();
//填充集合递减
o、 清除();
foreach(n中的var项)
o、 增加(项目);
你必须在代码隐藏中完成所有这些吗?实际上,是的。你可以蒙骗一个附加的属性或其他东西,但这只是一些非常简单的代码

由于您再次调用
Clear()
而没有将
o
设置为
newobservedcollection()
,因此UI将很好地跟上您的更改。所以不需要额外的活动或其他什么

剩下的问题是什么时候应该调用sort。这将以个案为基础。而且,只有你知道你的应用程序。当X数据更改时,调用Sort()

话虽如此,如果您认为X的值将频繁更改,那么您可能希望使用反应式扩展来限制事件。如果不频繁,那就不要管那部分了

如何对可观察到的集合进行排序?

如果你看看有哪些解决方案可以做到这一点。他们只是在做我在上面代码中所做的事情。它们只是可观测集合的子类。所有这些都值得这么简单的东西吗?大概你可以决定。但它们都在做同样的事情。我的建议是,少就是多


祝你好运

如何设置视图的数据上下文?
var o = new ObservableCollection<int>();

// fill collection ascending
var n = Enumerable.Range(1, 50);
foreach (var item in n)
    o.Add(item);

n = n.Reverse();
// fill collection descending
o.Clear();
foreach (var item in n)
    o.Add(item);