C# WPF DATAGRID集中在可见的中间行

C# WPF DATAGRID集中在可见的中间行,c#,wpf,datagrid,C#,Wpf,Datagrid,我需要在Datagrid中实现滚动到特定项。 fx我选择第355行,它需要滚动到可见网格区域的中心 到目前为止,我为SelectionChanged事件输入了以下代码: 如果需要,我有更多的示例代码 任何帮助都将不胜感激。我不知道我在做什么,但如果您使用此代码,您只需选择您的项目,行为将滚动到正确的位置 public class RadScrollIntoViewBehavior : Behavior<RadGridView> { protected override voi

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

到目前为止,我为SelectionChanged事件输入了以下代码:

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


任何帮助都将不胜感激。

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

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>
公共类RadScrollIntoViewBehavior:Behavior
{
受保护的覆盖无效附加()
{
base.onatached();
this.AssociatedObject.SelectionChanged+=新事件处理程序(AssociatedObject\u SelectionChanged);
}
无效关联对象\u选择已更改(对象发送者,选择更改事件参数e)
{
if(发送方为RadGridView)
{
RadGridView网格=(发送方为RadGridView);
如果(grid.SelectedItem!=null)
{
grid.UpdateLayout();
grid.ScrollIntoView(grid.SelectedItem,null);
}
}
}
附加时受保护的覆盖无效()
{
base.OnDetaching();
this.AssociatedObject.SelectionChanged-=新事件处理程序(AssociatedObject\u SelectionChanged);
}
}

-.-您的问题是?@DHN我希望所选行位于可见网格区域的中心。通常情况下,即使在可见网格区域的顶部或底部也会显示该行。O.O-对不起,我必须告诉您,但这是您想要的。一个进球。。。对问题的描述通常是对现状的总结,加上指示,指出哪一部分是错误的,或者你在哪里遇到了问题。
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>