如何在一个 XAML 中组合 StackPanel 和 Grid

问题描述 投票:0回答:1

我有一个

UserControl
,其中包含(在主
Grid
内)一个带有边距的
StackPanel
,它在我的
UserControl
内创建一个矩形,这非常简单:

<Grid Name="mainGrid" HorizontalAlignment="Center" VerticalAlignment="Top" >
    <StackPanel Orientation="Vertical" Margin="15">

结果:

我知道将

UserControl
“拆分”在不同的部分非常容易(因为我想在
UserControl
的下部添加一个上下文菜单):

<Grid Name="mainGrid" HorizontalAlignment="Center" VerticalAlignment="Top" >
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="0.77*"></RowDefinition>
            <RowDefinition Height="0.23*"></RowDefinition>
        </Grid.RowDefinitions>
    </Grid>        

结果:

现在我想将两者结合起来:我希望我的

UserControl
同时包含StackPanel和Grid,但这似乎并不那么简单:

<Grid Name="mainGrid" HorizontalAlignment="Center" VerticalAlignment="Top" >
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition Height="0.77*"></RowDefinition>
        <RowDefinition Height="0.23*"></RowDefinition>
      </Grid.RowDefinitions>
    </Grid>

    <StackPanel Orientation="Vertical" Margin="15">

预期结果:

实际结果是错误消息:

XLS0509
Property elements cannot be in the middle of an element's content. 
They must be before or after the content.

我该如何解决这个问题?

提前致谢

wpf xaml
1个回答
0
投票

我只能从你发布的 xaml 中猜测你做错了什么。

我怀疑您在网格之外和用户控制标签内有一些东西。我无法复制该特定错误。但我可以让它发挥作用。

这对我来说效果很好:

<UserControl x:Class="WpfApp7.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WpfApp7"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid Name="mainGrid" HorizontalAlignment="Center" VerticalAlignment="Top" >
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="0.77*"></RowDefinition>
                <RowDefinition Height="0.23*"></RowDefinition>
            </Grid.RowDefinitions>
        </Grid>
        <StackPanel Orientation="Vertical" Margin="15">
            <Rectangle Fill="Red" Height="20" Width="20"/>
        </StackPanel>
    </Grid>
</UserControl>
© www.soinside.com 2019 - 2024. All rights reserved.