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' には既に子があり、'Rectangle' を追加できません。「Expander」は、1 人の子のみを受け入れることができます。

Expander をいくつかの要素を保持するコンテナーとして使用できると思ったのですが、保持できるのは 1 つだけのようです! 回避策はありますか?

ありがとうございました。アミット

4

3 に答える 3

2

ExpanderContentControl です。つまり、単一のコンテンツを保持します。ほとんどのコンテナはこの方法です。

これを処理する方法は、四角形をグリッドなどの独自のパネル内に配置し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ここでは、GridStackPanelWrapPanelなど、任意のレイアウト メカニズムを使用できます。

于 2012-06-12T17:04:49.693 に答える
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 に答える
1

既にグリッドがあるウィンドウにエキスパンダーをネストする場合は注意してください。エキスパンダーのコンテンツがグリッドのコンテンツと競合するため、Content= の代わりに Header="texthere" を使用することを忘れないでください。

于 2017-03-16T17:13:30.440 に答える