我在this article之后的listview上实现了排序。打开窗口时如何将列表设置为默认排序?我试过了:
public MainWindow()
{
InitializeComponent();
SortCustomerList("CustomerName", ListSortDirection.Ascending);
}
...但是我得到了“调用目标抛出了异常”......内部异常“对象引用没有设置为对象的实例。”
[编辑]我按照建议移动了调用以对已加载的事件进行排序,但我仍然得到异常?以下是sort方法和加载事件的样子:
private void SortCustomerList(string sortBy, ListSortDirection direction)
{
ICollectionView dataView = CollectionViewSource.GetDefaultView(customersListView.ItemsSource);
dataView.SortDescriptions.Clear();
SortDescription sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);
dataView.Refresh();
}
private void mainWindow_Loaded(object sender, RoutedEventArgs e)
{
SortCustomerList("CustomerName", ListSortDirection.Ascending);
}
Clear()方法失败了。
感谢您的任何建议。
答案 0 :(得分:2)
你无法从WPF中的构造函数访问控件,它们没有被其数据等初始化。我认为Loaded事件是你想要使用的,但是在这里检查其他生命周期事件:{{3}更多信息。