向DataGrid添加滚动事件

时间:2011-09-06 21:58:20

标签: c# wpf datagrid

我有一个DataGrid定义如下,作为UserControl的一部分:

<DataGrid x:Name="dtGrid"  AutoGenerateColumns="False" 
            VirtualizingStackPanel.IsVirtualizing="True"                                       
            VirtualizingStackPanel.VirtualizationMode ="Standard"
              EnableColumnVirtualization="True"
              EnableRowVirtualization="True"
            ScrollViewer.IsDeferredScrollingEnabled="True"
            CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="True"
             ItemsSource ="{Binding}" Block.TextAlignment="Center"
             AlternatingRowBackground="#F1F1F1" RowBackground="White"
              CanUserAddRows="False" CanUserDeleteRows="False" FrozenColumnCount="1"
               GridLinesVisibility="None" >
    </DataGrid>

我想在用户水平拖动DataGrid时添加一个事件,它会更新我拥有的另一个图表。有人能指出我的方向来开始这个吗?感谢。

2 个答案:

答案 0 :(得分:16)

如果我正确理解了您的问题,您想知道用户何时水平滚动DataGrid。这可以通过附加的事件ScrollViewer.ScrollChanged来完成。

Xaml

<DataGrid x:Name="dtGrid"
          ScrollViewer.ScrollChanged="dtGrid_ScrollChanged"
          ... />

背后的代码

private void dtGrid_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
    if (e.HorizontalChange != 0)
    {
        // Do stuff..
    }
}

答案 1 :(得分:3)

如果通过'水平拖动'表示'水平滚动',则可以使用ScrollViewer.ScrollChanged事件。 ScrollChangedEventArgs包含HorizontalOffsetHorizontalChange等属性。