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

时间:2017-05-29 12:00:34

标签: wpf user-controls

运行程序后,它会在我的MainWindow中打开一个UserControl。 UserControl是一个由3个按钮组成的菜单。 UserControl的图片: Menu

主窗口背后的代码:

<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来克服它,但它仅适用于像素。我希望他们能够使用星星的方法(&#34; *&#34;)。我想我可以从背后的代码设置自己的身高(使用星星),但只是想到它让我觉得我用左手摩擦我的右耳。

此外,一旦我点击&#34; First&#34;按钮,在窗口中打开一些其他UserControl,而不是&#34;菜单&#34;一,它的行也崩溃了。只是提到它。

所以问题是,我应该怎样做才能使我的UserControl看起来像设计师一样?

1 个答案:

答案 0 :(得分:0)

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

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