WPF DataGrid聚焦行在中间可见

本文关键字:在中间 DataGrid 聚焦 WPF | 更新日期: 2023-09-27 18:14:41

我需要在Datagrid中实现滚动到特定项目。fx我选择第355行,它需要滚动到中心的可见网格区域。

到目前为止,SelectionChanged事件的代码如下:
   private void CoreServiceLogDataGridOnSelectionChanged(
        object sender, SelectionChangedEventArgs selectionChangedEventArgs)
    {
        if (CoreServiceLogDataGrid.SelectedItem != null)
        {
            CoreServiceLogDataGrid.ScrollIntoView(CoreServiceLogDataGrid.SelectedItem);
        }
    }

如果需要,我有更多的示例代码。

WPF DataGrid聚焦行在中间可见

我不知道我在做什么,但如果你使用这个代码,你只需要选择你的项目和行为将滚动到正确的位置。

public class RadScrollIntoViewBehavior : Behavior<RadGridView>
{
    protected override void OnAttached()
    {
        base.OnAttached();
        this.AssociatedObject.SelectionChanged += new EventHandler<SelectionChangeEventArgs>(AssociatedObject_SelectionChanged);
    }
    void AssociatedObject_SelectionChanged(object sender, SelectionChangeEventArgs e)
    {
        if (sender is RadGridView)
        {
            RadGridView grid = (sender as RadGridView);
            if (grid.SelectedItem != null)
            {
                grid.UpdateLayout();
                grid.ScrollIntoView(grid.SelectedItem, null);
            }
        }
    }
    protected override void OnDetaching()
    {
        base.OnDetaching();
        this.AssociatedObject.SelectionChanged -= new EventHandler<SelectionChangeEventArgs>(AssociatedObject_SelectionChanged);
    }
}


<telerik:RadGridView>
   <i:Interaction.Behaviors>
                <my3:RadScrollIntoViewBehavior />
            </i:Interaction.Behaviors> 
                <telerik:RadGridView.Columns>
                     <telerik:GridViewDataColumn Name="example"/>
                </telerik:RadGridView.Columns>
</telerik:RadGridView>