在我的Shell.xaml中,我想要两个模块,每个模块占用一半的高度并且可以扩展。为什么第一个模块被切断了?
贝壳:
<Window x:Class="HelloWorld.Desktop.Shell"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cal="http://www.codeplex.com/CompositeWPF"
Height="300"
Width="300"
Title="Hello World" >
<DockPanel LastChildFill="True">
<ContentControl Name="MainRegion"
DockPanel.Dock="Top"
cal:RegionManager.RegionName="MainRegion"/>
<ContentControl
Name="SecondRegion"
DockPanel.Dock="Top"
cal:RegionManager.RegionName="SecondRegion"/>
</DockPanel>
</Window>
HelloWorldView:
<UserControl x:Class="HelloWorldModule.Views.HelloWorldView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel
Background="Tan">
<TextBlock Text="Hello World View"
Foreground="Brown"
Margin="10 10 10 0"
FontSize="14"/>
<TextBlock Name="DisplayArea"
Margin="10 10 10 0" Text="(default text)" TextWrapping="Wrap"/>
</StackPanel>
</UserControl>
SecondView:
<UserControl x:Class="SecondModule.Views.SecondView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel
Background="Orange">
<TextBlock Text="Second View"
Foreground="Brown"
Margin="10 10 10 0"
FontSize="14"/>
<TextBox Name="Message"
Margin="10 10 10 0" Text="skfddsf" TextChanged="TextBox_TextChanged"/>
</StackPanel>
</UserControl>
答案 0 :(得分:1)
请允许我回答这个问题。我使用了具有可变行高的网格并且它有效。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="5*"/>
<RowDefinition Height="5*"/>
</Grid.RowDefinitions>
<ContentControl Name="MainRegion"
Grid.Row="0"
cal:RegionManager.RegionName="SecondRegion"/>
<ContentControl
Name="SecondRegion"
Grid.Row="1"
cal:RegionManager.RegionName="MainRegion"/>
</Grid>
奇怪的是, StackPanel 和 DockPanel 不会自动平均分配他们的空间。
答案 1 :(得分:0)
StackPanel不会拉伸其子节点来填充可用空间(这是一个功能)。
如果您使用LastChildFill="true"
,DockPanel会拉伸。