¿Por qué el expansor está diseñado para contener un solo contenido?

Estoy tratando de agregar algunos contenidos al expansor, sin embargo, arroja el siguiente error

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

El objeto 'Expansor' ya tiene un hijo y no puede agregar 'Rectángulo'. 'Expansor' puede aceptar solo un niño.

¡Pensé que podía usar Expander como un contenedor que contiene algunos elementos, pero parece que solo puede contener uno! cualquier trabajo alrededor?

Gracias. amit

preguntado el 12 de junio de 12 a las 18:06

3 Respuestas

Este es el caso de muchos elementos. Anidaría un panel, como Grid o StackPanel, para diseñar varios elementos secundarios.

Ejemplo:

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

Esto le brinda una flexibilidad ilimitada sobre cómo diseñar a los niños.

Respondido el 12 de junio de 12 a las 18:06

Gracias. he anidado un en el que por detrás hay un class toolbox : ItemsControl y también class ToolboxContent : ContentControl ahora supongo que mi próximo desafío es cómo agregarle control. - amit kohan

Expander es un ContentControl, lo que significa que contiene una sola pieza de contenido. La mayoría de los contenedores son de esta manera.

La forma de manejar esto es poner sus rectángulos dentro de su propio panel, como una cuadrícula, y hacer que el Grid el contenido del Expansor.

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

Puede usar cualquier mecanismo de diseño que desee aquí, como un Canvas, Grid, StackPanel, WrapPanel, etc.

Respondido el 12 de junio de 12 a las 18:06

Tenga cuidado al anidar un expansor en una ventana donde ya tiene una cuadrícula. Recuerde usar Header="textthere" en lugar de Content= porque el contenido del expansor entrará en conflicto con el contenido de la cuadrícula.

respondido 16 mar '17, 17:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.