我正在尝试向扩展器添加一些内容,但它会抛出以下错误
<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'已经有一个子节点,无法添加'Rectangle'。 'Expander'只能接受一个孩子。
我以为我可以使用Expander作为容纳少量元素的容器,但它似乎只能保留一个!任何解决方法?
谢谢。 阿米特
答案 0 :(得分: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>
这为您提供了如何布局孩子的无限灵活性。
答案 1 :(得分: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>
您可以使用此处所需的任何布局机制,例如Canvas
,Grid
,StackPanel
,WrapPanel
等。
答案 2 :(得分:1)
小心地将扩展器嵌套在已有网格的窗口中 记得使用Header =&#34; texthere&#34;而不是Content = 因为扩展器内容将与网格内容冲突