Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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
C# ListView的Order ObservableCollection_C#_Listview_Windows Runtime_Windows 8.1 - Fatal编程技术网

C# ListView的Order ObservableCollection

C# ListView的Order ObservableCollection,c#,listview,windows-runtime,windows-8.1,C#,Listview,Windows Runtime,Windows 8.1,我在为ListView排序数据时遇到问题。我有一个EventDisplay类,它是ListView的一个可观察集合(称为Events) 私有ObservableCollection currentEvents=新ObservableCollection(); 已加载私有无效事件(对象发送方、路由目标) { sv=(ScrollViewer)VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(this.Events,0),0); Events.I

我在为ListView排序数据时遇到问题。我有一个EventDisplay类,它是ListView的一个可观察集合(称为Events)

私有ObservableCollection currentEvents=新ObservableCollection();
已加载私有无效事件(对象发送方、路由目标)
{
sv=(ScrollViewer)VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(this.Events,0),0);
Events.ItemsSource=当前事件;
}
然后,我按函数添加新数据:

private void LoadDataToList(List<EventDisplay> newItems)
{
        foreach (EventDisplay ed in newItems)
        { 
            //Set some additional data
            currentEvents.Add(ed);
        }   
        //When this line below is commented ListView data is updated
        //but is not sorted, when i uncomment the listview data is not being updated

        //currentEvents = new ObservableCollection<EventDisplay>(currentEvents.OrderByDescending(x => x.ed.date).ToList());                   
    }
private void LoadDataToList(列出新项)
{
foreach(在newItems中显示事件)
{ 
//设置一些附加数据
currentEvents.Add(ed);
}   
//注释下面这一行时,将更新ListView数据
//但未排序,当我取消注释时,listview数据未被更新
//currentEvents=新的ObservableCollection(currentEvents.OrderByDescending(x=>x.ed.date).ToList());
}

那么,在Windows 8.1应用程序中,为ListView排序数据的正确方式是什么?

您应该执行以下操作:

currentEvents = new ObservableCollection<EventDisplay>(currentEvents.OrderByDescending(x => x.ed.date).ToList()); 
Events.ItemsSource = currentEvents;
currentEvents=newobserveCollection(currentEvents.OrderByDescending(x=>x.ed.date.ToList());
Events.ItemsSource=当前事件;
这将强制ListView重新绑定到新的已排序的可观察集合

另一个选项是对可观测集合进行适当排序。但是,它可能会引入闪烁,因为ListView会随着排序的进行而不断更新

如果不希望ScrollView重置其位置,可以保存ScrollView位置,然后在对列表排序后将其还原。
我成功地实现了一个自定义的ObservableCollection,它支持排序,但通过在排序期间挂起更改通知,然后发出重置通知来防止UI闪烁。即使遇到重置事件,ScrollView也应保持在当前位置。

您应执行以下操作:

currentEvents = new ObservableCollection<EventDisplay>(currentEvents.OrderByDescending(x => x.ed.date).ToList()); 
Events.ItemsSource = currentEvents;
currentEvents=newobserveCollection(currentEvents.OrderByDescending(x=>x.ed.date.ToList());
Events.ItemsSource=当前事件;
这将强制ListView重新绑定到新的已排序的可观察集合

另一个选项是对可观测集合进行适当排序。但是,它可能会引入闪烁,因为ListView会随着排序的进行而不断更新

如果不希望ScrollView重置其位置,可以保存ScrollView位置,然后在对列表排序后将其还原。
我成功地实现了一个自定义的ObservableCollection,它支持排序,但通过在排序期间挂起更改通知,然后发出重置通知来防止UI闪烁。即使遇到重置事件,ScrollView也应保持在当前位置。

您应执行以下操作:

currentEvents = new ObservableCollection<EventDisplay>(currentEvents.OrderByDescending(x => x.ed.date).ToList()); 
Events.ItemsSource = currentEvents;
currentEvents=newobserveCollection(currentEvents.OrderByDescending(x=>x.ed.date.ToList());
Events.ItemsSource=当前事件;
这将强制ListView重新绑定到新的已排序的可观察集合

另一个选项是对可观测集合进行适当排序。但是,它可能会引入闪烁,因为ListView会随着排序的进行而不断更新

如果不希望ScrollView重置其位置,可以保存ScrollView位置,然后在对列表排序后将其还原。
我成功地实现了一个自定义的ObservableCollection,它支持排序,但通过在排序期间挂起更改通知,然后发出重置通知来防止UI闪烁。即使遇到重置事件,ScrollView也应保持在当前位置。

您应执行以下操作:

currentEvents = new ObservableCollection<EventDisplay>(currentEvents.OrderByDescending(x => x.ed.date).ToList()); 
Events.ItemsSource = currentEvents;
currentEvents=newobserveCollection(currentEvents.OrderByDescending(x=>x.ed.date.ToList());
Events.ItemsSource=当前事件;
这将强制ListView重新绑定到新的已排序的可观察集合

另一个选项是对可观测集合进行适当排序。但是,它可能会引入闪烁,因为ListView会随着排序的进行而不断更新

如果不希望ScrollView重置其位置,可以保存ScrollView位置,然后在对列表排序后将其还原。
我成功地实现了一个自定义的ObservableCollection,它支持排序,但通过在排序期间挂起更改通知,然后发出重置通知来防止UI闪烁。即使遇到重置事件,ScrollView也应保持在其当前位置。

将其用于添加项目代码:

    foreach (EventDisplay ed in newItems.OrderByDescending(x => x.ed.date).ToList()
    { 
        //Set some additional data
        currentEvents.Add(ed);
    }  

您无法工作的原因是您被重新分配了
currentEvents
引用,而不是更新
ObservableCollection

将其用于添加项目代码:

    foreach (EventDisplay ed in newItems.OrderByDescending(x => x.ed.date).ToList()
    { 
        //Set some additional data
        currentEvents.Add(ed);
    }  

您无法工作的原因是您被重新分配了
currentEvents
引用,而不是更新
ObservableCollection

将其用于添加项目代码:

    foreach (EventDisplay ed in newItems.OrderByDescending(x => x.ed.date).ToList()
    { 
        //Set some additional data
        currentEvents.Add(ed);
    }  

您无法工作的原因是您被重新分配了
currentEvents
引用,而不是更新
ObservableCollection

将其用于添加项目代码:

    foreach (EventDisplay ed in newItems.OrderByDescending(x => x.ed.date).ToList()
    { 
        //Set some additional data
        currentEvents.Add(ed);
    }  

您无法工作的原因是您被重新分配了
currentEvents
引用,而不是更新
ObservableCollection

您可以对ObservableCollection的视图进行排序和筛选(说明)

代码的使用示例:

ViewableCollection<ICustomer> vCustomers = new ViewableCollection<ICustomer>();
// Sorting settings:
ViewableCollection<ICustomer> vCustomers.View.SortDescriptions.Add(new SortDescription("CustomerName", ListSortDirection.Ascending));
vCustomers.View.Filter = MyCustomFilterMethod;
// add data to collection
MyCustomers.ToList().ForEach(customer => vCustomers.Add(customer));
当您需要刷新筛选器时,只需调用:

this.vCustomers.View.Refresh();
然后将GUI绑定到
vCustomers。查看


您不需要重置绑定源等。

您可以对ObservableCollection的视图进行排序和筛选(解释)

代码的使用示例:

ViewableCollection<ICustomer> vCustomers = new ViewableCollection<ICustomer>();
// Sorting settings:
ViewableCollection<ICustomer> vCustomers.View.SortDescriptions.Add(new SortDescription("CustomerName", ListSortDirection.Ascending));
vCustomers.View.Filter = MyCustomFilterMethod;
// add data to collection
MyCustomers.ToList().ForEach(customer => vCustomers.Add(customer));
当您需要刷新筛选器时,只需调用:

this.vCustomers.View.Refresh();
然后将GUI绑定到
vCustomers。查看

你不知道吗