WPF:具有多个DataGrid和Label的ScrollViewer

时间:2014-08-12 06:10:14

标签: wpf datagrid scroll scrollviewer

在我的WPF-Application中,我有一个窗口,其中包含许多动态DataGrid,顶部有一个Label作为标题行。这些元素是ScrollViewer的子元素。 如果我向上或向下滚动ScrollViewer总是跳转到Label。从DataGrids的内容中,只有第一列可见。 我的WPF代码:

<ScrollViewer CanContentScroll="True" PanningMode="VerticalFirst" MouseWheel="ResultDataGrid_OnMouseWheel" x:Name="ResultScrollViewer" Height="Auto">
  <StackPanel x:Name="ResultStackPanel">
  <TextBlock Text="Result" Style="{StaticResource Heading2}" />
    <StackPanel Style="{StaticResource ResultStackPanel}">
       <Label Content="Informations" x:Name="LabelInfo" Style="{StaticResource BoldLabel}"/>
       <DataGrid x:Name="ResultMeta" Style="{StaticResource DataGridStyle}" />
    </StackPanel>
    <StackPanel Style="{StaticResource ResultStackPanel}">
       <Label Content="Statistics" Style="{StaticResource BoldLabel}"/>
       <DataGrid x:Name="ResultStat" Style="{StaticResource DataGridStyle}" />
    </StackPanel>
    <StackPanel Style="{StaticResource ResultStackPanel}">
       <Label Content="Resources" Style="{StaticResource BoldLabel}" />
       <DataGrid x:Name="ResultResources" Style="{StaticResource DataGridStyle}" />
    </StackPanel>
    <!-- ... -->
  </StackPanel>
</ScrollViewer>

1 个答案:

答案 0 :(得分:1)

ScrollViewer的默认滚动行为是滚动元素。 您可以尝试更改此行为,使用选项CanContentScroll="bool"将其设置为像素。

您可以从MSDN获取更多信息

http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.cancontentscroll(v=vs.110).aspx

但请记住,此选项会强制ScrollViewer加载所有可用元素,而不是显示的元素(加载时的性能)。