我需要实现滚动到Datagrid中的特定项目。 fx我选择行Nr 355,需要滚动到可见网格区域的中心。
到目前为止,我的 SelectionChanged事件的代码:
private void CoreServiceLogDataGridOnSelectionChanged(
object sender, SelectionChangedEventArgs selectionChangedEventArgs)
{
if (CoreServiceLogDataGrid.SelectedItem != null)
{
CoreServiceLogDataGrid.ScrollIntoView(CoreServiceLogDataGrid.SelectedItem);
}
}
如果需要,我有更多示例代码。
非常感谢任何帮助。
答案 0 :(得分:1)
我不知道我在做什么,但如果您使用此代码,您只需要选择您的项目,行为将滚动到正确的位置。
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>