1

我有一个带有 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 的视图)。

4

1 回答 1

0

您可以使用类似的方法让窗口保持由用户调整大小,但不能由控件本身调整。

<Grid  ScrollViewer.VerticalScrollBarVisibility="Auto">
于 2014-04-20T16:46:17.833 回答