次の内容のウィンドウがあります。
<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>
私の目標は次のことです: ウィンドウのコンテンツの幅がウィンドウの幅よりも小さい場合、外側の水平スクロールバーが表示されます。データグリッドの列幅を増やすと、このデータグリッドの水平スクロールバーのみが表示されます。
私をブロックするもの:
データグリッドの列幅を増やすと、データグリッドのサイズが変更され、非アクティブな「 Inner1 」の代わりに「 Outer」水平スクロールバーが表示されます。
実際、私のアプリにはフレーム コントロールのあるウィンドウがあります。フレームはカスタム コンテンツを含むページを読み込み、ページ サイズはウィンドウ サイズよりも大きくなる場合があります。フレーム コントロールは ScrollViewer でラップされます。データグリッドに行がない場合でも、列幅が変更されたときに水平スクロールバーを表示するために、スクロールビューアーでラップされたいくつかの DataGrid がページに含まれています。したがって、データグリッドの列幅を大きくすると、データグリッドのサイズが変更されます->データグリッドがページ全体のサイズを変更します->フレームをラップするスクロールビューアーが表示されます。列幅が変更されたときにデータグリッドのサイズ変更を無効にすることはできますか?