Skip to content

Instantly share code, notes, and snippets.

@samnaseri
Created November 29, 2012 01:32

Revisions

  1. Sam Naseri created this gist Nov 29, 2012.
    26 changes: 26 additions & 0 deletions KeepSelectionInView behavior.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,26 @@
    using System.Windows.Controls;
    using System.Windows.Interactivity;

    public class KeepSelectionInView : Behavior<DataGrid>
    {
    protected override void OnAttached()
    {
    base.OnAttached();
    this.AssociatedObject.SelectionChanged += DataGrid_SelectionChanged;
    }

    protected override void OnDetaching()
    {
    base.OnDetaching();

    this.AssociatedObject.SelectionChanged -= DataGrid_SelectionChanged;
    }

    void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
    if (AssociatedObject.SelectedItem != null)
    AssociatedObject.ScrollIntoView(AssociatedObject.SelectedItem);
    else if (AssociatedObject.SelectedItems != null && AssociatedObject.SelectedItems.Count > 0)
    AssociatedObject.ScrollIntoView(AssociatedObject.SelectedItems[0]);
    }
    }