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

bjg7j2ky  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(138)

我有一个UserControl,它包含(在主Grid内)一个带有边距的StackPanel,它在我的UserControl内创建了一个矩形,这很容易:

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

字符串
测试结果:


的数据
我知道将UserControl“拆分”成不同的部分非常容易(因为我想在UserControl的下部添加一个contextmenu):

<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.


我该怎么解决这个问题?
Thanks in advance

zaqlnxep

zaqlnxep1#

我只能猜测你做错了什么从你的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>

字符串

相关问题