WPF中的Telerik RadGridView:GetRowForItem方法在调用SortDescriptors.Reset()后返回null

时间:2013-09-06 16:08:59

标签: wpf multithreading telerik radgridview

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。

1 个答案:

答案 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());
        }));
    }