在 MainWindow 中打开新的 UserControl 会清除所有空行

Opening new UserControl in MainWindow erases all empty rows

一旦我 运行 程序,它就会在我的 MainWindow 中打开一个 UserControl。 UserControl 是一个由 3 个按钮组成的菜单。 用户控件的图像: Menu

Main 背后的代码 Window:

<Window 
    ...
    Title="MainWindow" Height="350" Width="525" SizeToContent="WidthAndHeight" >
<Window.DataContext>
    <ViewModels:MainWindowViewModel />
</Window.DataContext>

<ContentControl Content="{Binding CurrentViewModel}"/>  //Inserts a UserControl

Menu UserControl背后的代码:

<UserControl 
         ...
         d:DesignHeight="90" d:DesignWidth="525" >
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="100*"/>  //Problem
        <RowDefinition Height="100*"/>
        <RowDefinition Height="100*"/>  //Problem
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <Button Grid.Row="1" Margin="30,0" Content="First" Command="{Binding DataContext.SwitchToNextUserControl, 
        RelativeSource={RelativeSource AncestorType={x:Type local:MainWindow}}, Mode=OneWay}" />

    <Button Grid.Row="1" Grid.Column="1" Margin="30,0" Content="Second"/>
    <Button Grid.Row="1" Grid.Column="2" Margin="30,0" Content="Third"/>

</Grid>

问题: 打开菜单后,空行(没有按钮的行,第一行和第三行)会折叠(或者只是高度为 0?),如图所示:Running program 我可以通过为每一行设置 MinHeight 来克服它,但它只适用于像素。我希望他们以星号(“*”)的方式工作。我想我可以通过后面的代码设置他们的高度(使用星星),但光是想到它就让我觉得我用左手揉右耳。

此外,一旦我单击 "First" 按钮,就会在 window 中打开其他一些 UserControl,而不是 "Menu",并且它的行也会折叠。顺便提一下。

所以问题是,我应该怎么做才能让我的 UserControls 像在设计器中一样显示?

您应该从 window XAML 中删除 SizeToContent="WidthAndHeight"

这会导致 window 的高度缩小以适合 UserControl 的大小(实际上是中间 Button 的高度)。