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