GetRowForItem方法在调用grid.SortDescriptors.Reset()后返回null。以下代码是一个按钮单击事件的示例,它获取所选项目的行:
private void GetRowForSelectedItem_Click(object sender, RoutedEventArgs e)
{
this.clubsGrid.SortDescriptors.Reset();
var r = this.clubsGrid.GetRowForItem(this.clubsGrid.SelectedItem);
MessageBox.Show(r.ToString());
}
r的值为null。
答案 0 :(得分:1)
发生这种情况的原因是Grid.SortDescriptors.Reset()方法正在UI线程上执行,并且在调用GetRowForItem方法时尚未完成。这是一个似乎适合我的解决方法。我正在调用SortDescriptors.Reset()方法,然后调用BeginInvoke(使用DispatcherPriority of Input)来调用GetRowForItem方法。
private void GetRowForSelectedItem_Click(object sender, RoutedEventArgs e)
{
this.clubsGrid.SortDescriptors.Reset();
System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Input, new Action(() =>
{
var r = this.clubsGrid.GetRowForItem(this.clubsGrid.SelectedItem);
MessageBox.Show(r.ToString());
}));
}