我有一个带有 ContentControl 的页面。ContentControl 被动态设置为当前仅包含 DataGrid 的 UserControl。发生这种情况时,页面将被调整大小以适应 DataGrid 的内容,这恰好使页面离开屏幕。
如果我将页面宽度从 Auto 更改为硬编码值,则在动态设置 ContentControl 时页面宽度不会改变。这是我想要的行为。但是,这也意味着当用户手动拖动窗口变大时,窗口的内容不会扩大到大于我设置的硬编码宽度值。
如何在设置 ContentControl 时使页面保持相同的大小,同时在用户增加窗口大小时仍允许页面增长?
<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 按钮时页面保持在此宽度(如上所述,它将加载 ContentControl 和包含 DataGrid 的视图)。