我有下一个内容的窗口:
<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>
我的目标是下一步: 如果窗口内容宽度小于窗口宽度 - 应出现外部水平滚动条。如果我增加datagrid列宽 - 只应出现此数据网格的水平滚动条。
阻止我的是什么:
当我增加datagrid列宽时 - 它会调整其数据网格的大小并显示“外部”水平滚动条而不是“ Inner1 ”保持不活动状态。
事实上,在我的应用程序中,我有一个框架控制窗口。框架加载具有自定义内容的页面,页面大小可能大于窗口大小。帧控件包含ScrollViewer。页面包含一些包含滚动查看器的DataGrids,以便在更改列宽时显示水平滚动条,即使datagrid中没有行也是如此。 因此,当我增加datagrid列宽时,它会调整datagrid的大小 - &gt; datagrid调整整个页面的大小 - &gt;出现了包裹框架的scrollviewer。 是否可以在更改列宽时禁用datagrid调整大小?
答案 0 :(得分:-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>