基本上标题是什么。 stackpanel与菜单重叠,我不明白为什么。这是XAML。
<Grid>
<Menu x:Name="menu" HorizontalAlignment="Left" Height="25" VerticalAlignment="Top" Width="592"/>
<StackPanel x:Name="LOCATIONS" HorizontalAlignment="Left" Margin="0,25,0,0" VerticalAlignment="Top" Height="294" Width="200" Background="LightGray"/>
</Grid>
</Window>
答案 0 :(得分:1)
原因是因为Grid
是一个容器。如果您将元素添加为子元素,则它们将相互重叠,最后一个子元素始终位于顶部。
您需要做的是在Rows
中使用Grid
,以便每个子元素都有自己的专用区域。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Menu x:Name="menu" Grid.Row="0" Height="25" />
<StackPanel x:Name="LOCATIONS" Grid.Row="1" HorizontalAlignment="Left" Width="200" Background="LightGray"/>
</Grid>
上述代码可让您删除不必要的Heights
和Alignments
。
您也可以使用DockPanel
来达到同样的效果。
<DockPanel LastChildFill="True">
<Menu x:Name="menu" DockPanel.Dock="Top" Height="25" />
<StackPanel x:Name="LOCATIONS" HorizontalAlignment="Left" Width="200" Background="LightGray"/>
</DockPanel>
答案 1 :(得分:0)
您需要为网格定义行或列。
我建议你阅读本教程: http://www.wpftutorial.net/gridlayout.html
答案 2 :(得分:0)
您正在使用2个元素同时填充网格。相反,您应该在网格中定义两行。一行高度为20像素,第二行填充其余部分。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="100*/>
</Grid.RowDefinitions>
<Menu x:Name="menu" Grid.Row="0"/>
<StackPanel x:Name="LOCATIONS" Grid.Row="1" Background="LightGray"/>
</Grid>
这可以解决您的问题。
答案 3 :(得分:0)
在Grid中,最高z-index应用于最后应用的元素,所以这里当你在菜单后声明stackpanel时,它得到的z-index比菜单的z-index为0,给出z-index为0,所以你使用Grid.Row或Panel.Z-index更好..