【问题标题】:Nested scrollviewers with datagrids带有数据网格的嵌套滚动查看器
【发布时间】:2013-08-16 13:11:05
【问题描述】:

我有下一个内容的窗口:

<Grid>
    <ScrollViewer x:Name="Outer" CanContentScroll="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="2*" />
            </Grid.RowDefinitions>
            <ScrollViewer x:Name="Inner1" CanContentScroll="True" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Auto">
                <DataGrid HorizontalAlignment="Stretch" MinWidth="700" >
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="Column A" />
                        <DataGridCheckBoxColumn Header="Column B" />
                    </DataGrid.Columns>
                </DataGrid>
            </ScrollViewer>
            <TextBox Width="500" Grid.Row="1" HorizontalAlignment="Left"/>
            <ScrollViewer x:Name="Inner2" Grid.Row="1" CanContentScroll="True" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Auto">
                <DataGrid HorizontalAlignment="Stretch" >
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="Column С" />
                        <DataGridCheckBoxColumn Header="Column В" />
                    </DataGrid.Columns>
                </DataGrid>
            </ScrollViewer>
        </Grid>
    </ScrollViewer>
</Grid>

我的目标是下一步: 如果窗口内容宽度小于窗口宽度 - 应该出现外部水平滚动条。如果我增加数据网格列宽 - 应该只出现此数据网格的水平滚动条。

什么阻碍了我:

当我增加数据网格列宽时 - 它会调整其数据网格的大小,并且会出现“Outer”水平滚动条,而不是保持非活动状态的“Inner1”。

事实上,在我的应用程序中,我有带框架控件的窗口。框架加载具有自定义内容的页面,页面大小可能大于窗口大小。框架控件由 ScrollViewer 包装。页面包含一些用滚动查看器包裹的 DataGrids,以在更改列宽时显示水平滚动条,即使数据网格中没有行也是如此。 因此,当我增加数据网格列宽时,它会调整数据网格的大小-> 数据网格调整整个页面的大小-> 出现包装框架的滚动查看器。 更改列宽时是否可以禁用数据网格调整大小?

【问题讨论】:

    标签: wpf datagrid scrollviewer


    【解决方案1】:

    似乎因为它们嵌套在同一个网格行中,所以它们都使用了顶级滚动查看器。这是一个修复,但不确定它是否是您想要的。

      <Window x:Class="NestedScrollViewer.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <ScrollViewer x:Name="Outer" CanContentScroll="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
                <Grid>
                    <DataGrid HorizontalAlignment="Stretch" >
                        <DataGrid.Columns>
                            <DataGridCheckBoxColumn Header="Column A" />
                            <DataGridCheckBoxColumn Header="Column B" />
                        </DataGrid.Columns>
                    </DataGrid>
                </Grid>
            </ScrollViewer>
            <ScrollViewer x:Name="Inner2" Grid.Row="1" CanContentScroll="false" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Auto">
                <Grid>
                    <DataGrid HorizontalAlignment="Stretch" >
                        <DataGrid.Columns>
                            <DataGridCheckBoxColumn Header="Column С" />
                            <DataGridCheckBoxColumn Header="Column В" />
                        </DataGrid.Columns>
                    </DataGrid>
                </Grid>
            </ScrollViewer>
        </Grid>
    </Window>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多