2012-06-12 55 views
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'只能接受一個孩子。

我以爲我可以使用擴展器作爲容納少量元素的容器,但它似乎只能容納一個!任何工作?

謝謝。 Amit

回答

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> 

這給你如何佈置孩子們無限的靈活性。

+0

由於衝突。我嵌入了一個** **,其中後面是一個'class toolbox:ItemsControl'和'class ToolboxContent:ContentControl'現在我想我的下一個挑戰是如何在它上面添加控件。 –

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> 

你可以使用你想在這裏的任何佈局機制 - 如CanvasGridStackPanelWrapPanel

1

要小心,在一個窗口中嵌套的膨脹,你已經有一個網格 記使用包頭=「texthere」,而不是內容= 因爲擴展的內容將與網格內容