【问题标题】:Datagrid horizontal scroll automatically changes when keydown event happens当keydown事件发生时Datagrid水平滚动会自动改变
【发布时间】:2014-01-13 04:35:41
【问题描述】:

我正在开发 WPF 应用程序,其中有 datagridview。

当我使用向下键垂直导航记录时,它也会自动更改水平滚动。

数据网格如下:

<Custom:DataGrid  x:Name="dataGridResults"   Margin="33.183,73.372,8,45.742" MouseLeftButtonUp="dgdGlobal_MouseLeftButtonUp"
                         Background="#FF222E44" Foreground="#FF97B2CF" Style="{DynamicResource DataGridStyle1}"
                         RowHeaderStyle="{DynamicResource DataGridRowHeaderStyle1}" ColumnHeaderStyle="{DynamicResource DataGridColumnHeaderStyle1}" 
                         RowStyle="{DynamicResource DataGridRowStyleAuto}" ItemsPanel="{DynamicResource ItemsPanelTemplate1}"
                         CellStyle="{DynamicResource DataGridCellStyleGreen}" 
                         VerticalGridLinesBrush="{x:Null}" RowBackground="#FFC71919" HorizontalGridLinesBrush="{x:Null}"
                         KeyUp="dgdGlobal_KeyUp" DataContext="{Binding}" AllowDrop="True" Drop="dataGridResults_Drop"
                         MouseDoubleClick="dataGridResults_MouseDoubleClick" PreviewMouseLeftButtonDown="dataGridResults_PreviewMouseLeftButtonDown"
                         MouseMove="dataGridResults_MouseMove" MouseRightButtonUp="dataGridResults_MouseRightButtonUp" 
                         SelectionChanged="dgdGlobal_SelectionChanged" MouseWheel="dataGridResults_MouseWheel" 
                         AutoGeneratedColumns="dataGridResults_AutoGeneratedColumns" ColumnReordered="dataGridResults_ColumnReordered"
                         FontFamily="Segoe UI" GridLinesVisibility="None" ScrollViewer.CanContentScroll="True"
                         FocusVisualStyle= "{x:Null}"  MouseEnter="dataGridResults_MouseOver" Sorting="dataGridResults_Sorting" PreviewKeyDown="dgdGlobal_KeyDown" KeyDown="dgdGlobal_KeyDown" AreRowDetailsFrozen="True" HeadersVisibility="None" LoadingRow="dataGridResults_LoadingRow" EnableColumnVirtualization="True" IsReadOnly="True" RenderTransformOrigin="0.5,0.5" Grid.Row="1" Height="Auto"  VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" d:IsHidden="True" ScrollViewer.ScrollChanged="dataGridResults_ScrollChanged" >
            <Custom:DataGrid.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform/>
                    <TranslateTransform/>
                </TransformGroup>
            </Custom:DataGrid.RenderTransform>
            <Custom:DataGrid.BindingGroup>
                <BindingGroup/>
            </Custom:DataGrid.BindingGroup>
        </Custom:DataGrid>

是否需要添加任何属性或代码?

请帮帮我。

编辑:

【问题讨论】:

  • 你能说得更具体一点吗?说“它会自动改变水平滚动”并没有那么有用。
  • @CodeAssasssin 等我发图
  • @CodeAssasssin 先生请看我添加的图片

标签: c# .net wpf visual-studio-2010 datagrid


【解决方案1】:

我参考了这个答案:

How to autoscroll on WPF datagrid

刚刚将下面的代码粘贴到 scp_RequestBringIntoView 中:

if (mainDataGrid.Items.Count > 0)
        {
            var border = VisualTreeHelper.GetChild(mainDataGrid, 0) as Decorator;
            if (border != null)
            {
                var scroll = border.Child as ScrollViewer;
                if (scroll != null) scroll.ScrollToEnd();
            }
        }

这段代码对我帮助很大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多