微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

绑定到已设置selectedItem的视图模型时,无法使telerik radgridview突出显示SelectedItem

我有一个屏幕,上面有一个telerik RadGridView作为父/主控件.然后,我有一个用户控件,显示所选项目的详细信息.

我的网格设置如下:

<telerik:RadGridView  
 AutoGenerateColumns="False"  
 CanUserFreezeColumns="False" IsReadOnly="True"
 RowIndicatorVisibility="Collapsed" 
 ItemsSource="{Binding LinkedCases}" 
 SelectionUnit="FullRow" SelectionMode="Single"
 IsBusy="{Binding LinkedCasesLoading}" 
 ShowColumnFooters="True" 
 SelectedItem="{Binding CurrentlySelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >

当前选择项是视图模型上的一个属性.
它工作正常,并且正确填充了详细信息控件.

当我导航离开并返回此屏幕时,就会出现我的问题.

屏幕是从头开始重新创建的,但是我的视图模型是从视图模型定位器中检索到的(使用MVVM Light和SimpleIOC).
viewmodel完全处于我要求的状态.父网格正确填充,子详细信息正确填充. viewmodel上的CurrentSelectedItem已填充,但网格未突出显示所选行.

我尝试了是否使用Updatesourcetrigger和IsSynchronizedWithCurrentItem,但这些导致它选择网格中的第一行并突出显示该行-从而覆盖了我当前在CurrentSelectedItem中的值,这不是我要的.

有人对如何实现这一目标有任何想法吗?

解决方法:

无法在加载的页面上获得对网格的引用,也无法导航至该网格-我将其命名为CaseGridView,尽管它识别出它是RadGridView,但返回的是null.我只是假定它此时尚未创建控件,因此,因为我将其命名为控件,并尝试使用该控件在控件事件中引用该控件,这也失败了.

如果使用发件人,发现它适用于DataLoaded事件:

 private void CaseGridView_DataLoaded(object sender, EventArgs e)
    {
        var grid = sender as RadGridView;
        if (grid != null)
        {
            grid.SelectedItem = vm.CurrentlySelectedItem;
            if (grid.SelectedItem != null)
            {
                grid.ScrollIntoView(grid.SelectedItem);
            }
        }
    }

我还添加了scrollIntoView部分,以确保它在屏幕上可见.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐