1

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 を読み込みます)。

4

1 に答える 1

0

このようなものを使用して、コントロール自体ではなく、ユーザーがウィンドウのサイズを変更できるようにすることができます。

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