ContentControl を持つページがあります。ContentControl は、現在 DataGrid のみを含む UserControl に動的に設定されます。これが発生すると、DataGrid のコンテンツに合わせてページのサイズが変更され、たまたまページが画面からはみ出してしまいます。
ページ幅を Auto からハードコードされた値に変更すると、ContentControl が動的に設定されてもページ幅は変更されません。これは私が望む動作です。ただし、これは、ユーザーがウィンドウを手動でドラッグして大きくすると、ウィンドウの内容が、設定したハードコードされた幅の値よりも大きくならないことも意味します。
ユーザーがウィンドウ サイズを大きくしたときにページが拡大できるようにしながら、ContentControl が設定されているときに Page を同じサイズに維持するにはどうすればよいですか?
<Page x:Class="SageWpf.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" Title="ShellView" MinHeight="450" MinWidth="800">
<Grid Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Page, AncestorLevel=1}, Path=Width}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderBrush="Black" BorderThickness="2" Width="193">
<StackPanel Orientation="Vertical" Width="188">
<Button x:Name="ItemsScreen" FontSize="28" Height="65" Margin="1" Opacity="1">Items</Button>
<Button x:Name="CheckoutScreen" FontSize="28" Height="65" Margin="1" Opacity="1">Checkout</Button>
</StackPanel>
</Border>
<ContentControl x:Name="ActiveItem" Grid.IsSharedSizeScope="True" Grid.Column="1"></ContentControl>
</Grid>
</Page>
ご覧のとおり、MinWidth は 800 で、CheckoutScreen ボタンがクリックされたときにページをこの幅のままにしたいと思います (上記のように、DataGrid を含むビューで ContentControl を読み込みます)。