如何默认排序wpf listview

时间:2011-01-08 16:06:58

标签: c# wpf listview

我在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()方法失败了。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

你无法从WPF中的构造函数访问控件,它们没有被其数据等初始化。我认为Loaded事件是你想要使用的,但是在这里检查其他生命周期事件:{{3}更多信息。