0

我正在尝试向扩展器添加一些内容,但是它会引发以下错误

<Expander Name="myExpander" Background="Tan"
              HorizontalAlignment="Left" Header="my expander"
              ExpandDirection="Down" IsEnabled="True" Width="100" IsExpanded="True">
        <Rectangle Width="10" Height="10" Fill="Red"/>
        <Rectangle Width="10" Height="10" Fill="blue"/>
</Expander>

对象“扩展器”已有子对象,无法添加“矩形”。'Expander' 只能接受一个孩子。

我以为我可以将 Expander 用作容纳少量元素的容器,但它似乎只能容纳一个!有什么解决方法吗?

谢谢你。阿米特

4

3 回答 3

2

许多元素都是这种情况。您可以嵌套一个面板,例如 Grid 或 StackPanel,以便布局多个子项。

例子:

<Expander Name="myExpander" Background="Tan"
              HorizontalAlignment="Left" Header="my expander"
              ExpandDirection="Down" IsEnabled="True" Width="100" IsExpanded="True">
        <StackPanel>
            <Rectangle Width="10" Height="10" Fill="Red"/>
            <Rectangle Width="10" Height="10" Fill="blue"/>
        </StackPanel>
</Expander>

这为您在如何布局孩子方面提供了无限的灵活性。

于 2012-06-12T17:04:38.340 回答
2

Expander是一个 ContentControl,这意味着它包含单个内容。大多数容器都是这样的。

处理此问题的方法是将矩形放在它们自己的面板中,例如网格,并制作Grid扩展器的内容。

<Expander Name="myExpander" Background="Tan"
          HorizontalAlignment="Left" Header="my expander"
          ExpandDirection="Down" IsEnabled="True" Width="100" IsExpanded="True">
    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
      </Grid.ColumnDefinitions>
        <Rectangle Width="10" Height="10" Fill="Red"/>
        <Rectangle Grid.Column="1" Width="10" Height="10" Fill="blue"/>
    </Grid>
</Expander>

您可以在此处使用您想要的任何布局机制 - 例如 a Canvas, Grid, StackPanel,WrapPanel等。

于 2012-06-12T17:04:49.693 回答
1

小心在已经有网格的窗口中嵌套扩展器记住使用 Header="texthere" 而不是 Content= 因为扩展器内容会与网格内容冲突

于 2017-03-16T17:13:30.440 回答