如何在Windows 10通用应用程序开发中使用LINQ或不使用LINQ在c#中点击更新ObservableCollec
本文关键字:LINQ 更新 ObservableCollec Windows 应用程序开发 10通 | 更新日期: 2023-09-27 18:01:27
你好,我是Windows应用程序开发的新手,我正在尝试在c#中更新一个ObservableCollection以动态地反映xaml UI中的变化,但是这些变化没有反映在UI中。我做错了什么吗?或者它不适合Windows 10或什么?
请有人纠正我或建议我一个更好的方法比我正在做的。
Thanks in Advance.
我的类:
public class Students
{
public string Name;
public int Age;
Public int Section_no;
}
My c# code:
public ObservableCollection<Students> student = new ObservableCollection<Students>();
private void FilterItem_Click(object sender, RoutedEventArgs e)
{
MenuFlyoutItem selectedItem = sender as MenuFlyoutItem;
if (selectedItem != null)
{
if (selectedItem.Tag.ToString() == "section")
{
student =new ObservableCollection<Students>(student.OrderBy(i => i.Section_no));
}
else if (selectedItem.Tag.ToString() == "age")
{
student = new ObservableCollection<Students>(student.OrderBy(i => i.Age));
}
else if (selectedItem.Tag.ToString() == "name")
{
student = new ObservableCollection<Students>(student.OrderBy(i => i.Name));
}
}
}
您的student
变量必须是属性,以便您的UI正确绑定到它。不仅如此,当您在方法中创建集合的新实例时,它必须实现INotifyPropertyChanged
。
private ObservableCollection<Student> _Students;
public ObservableCollection<Student> Students
{
get { return _Students; }
set
{
_Students = value;
//Notify property changed stuff.
OnPropertyChanged();
}
}
不要忘记为你的包含类实现INotifyPropertyChanged
当您尝试动态更新您的UI时,您需要使用数据绑定。首先是对象类,每个属性都需要实现INotifyPropertyChanged。如果操作正确,对这些属性的任何更改都将自动传播到UI。然后假设你的ObservableCollection被设置为ListView的ItemsSource,对它的任何更改也将被传播。
这是一篇关于使用INotifyPropertyChanged实现数据绑定的快速文章。它是为Windows 8.1通用应用程序编写的,但在Windows 10上也一样。
http://blogs.msdn.com/b/quick_thoughts/archive/2014/06/10/data-binding-part-3-implementing-the-inotifypropertychanged-interface.aspx