在 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
的高度)。
一旦我 运行 程序,它就会在我的 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
的高度)。