2015-01-28 1 views
2

Я пытаюсь реализовать расширитель в WPF, который в стороне есть некоторые вложенные элементы управления. Одна из них - панель Wrap, которую я хотел бы обернуть, когда пользователь меняет размер окна.Wrap Panel Not Wrapping, когда он содержится в других элементах управления

Это работает, если я беру родительский элемент Grid Control из WrapPanel и помещаю его в свое приложение, но не в этом формате. Поскольку я не использую минимальную ширину для этой сетки, она меня удивляет, почему она не обертывается. Есть идеи? Благодаря

<Window x:Class="WpfApplication5.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525" FontFamily="Calibri" FontSize="8"> 
<StackPanel Orientation="Vertical"> 
    <Expander Margin="3" Padding="3"> 
     <Expander.Header> 
      <StackPanel Orientation="Horizontal" MinWidth="150" Width="Auto" MinHeight="25"> 
       <Label MinWidth="50">Label 1</Label> 
       <CheckBox VerticalAlignment="Center"></CheckBox> 
       <Border></Border> 
       <Label>Label 2</Label> 
      </StackPanel> 
     </Expander.Header> 
     <Expander.Content> 
      <StackPanel Orientation="Horizontal" > 
       <Label MinWidth="150">Add Image</Label> 
       <Grid Name="Grid1" ShowGridLines="True" Width="Auto"> 
        <Grid.RowDefinitions> 
         <RowDefinition Name="Title1" MinHeight="25"></RowDefinition> 
         <RowDefinition Name="Number1" MinHeight="25"></RowDefinition> 
         <RowDefinition Name="PlaneA" MinHeight="25"></RowDefinition> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Name="Plane1" MinWidth="25" Width="Auto"></ColumnDefinition> 
         <ColumnDefinition Name="PlaneCheckBox" MinWidth="25" Width="Auto"></ColumnDefinition> 
         <ColumnDefinition Name="Border1" MinWidth="25" Width="Auto"></ColumnDefinition> 
         <ColumnDefinition Name="List1" Width="*"></ColumnDefinition> 
        </Grid.ColumnDefinitions> 
        <WrapPanel Grid.Row="2" Grid.Column="3" Orientation="Horizontal" VerticalAlignment="Stretch"> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition MinWidth="25"></ColumnDefinition> 
           <ColumnDefinition MinWidth="25"></ColumnDefinition> 
          </Grid.ColumnDefinitions> 
          <CheckBox Grid.Column="0" VerticalAlignment="Center"></CheckBox> 
          <Label Grid.Column="1">No. 1</Label> 
         </Grid> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition MinWidth="25"></ColumnDefinition> 
           <ColumnDefinition MinWidth="25"></ColumnDefinition> 
          </Grid.ColumnDefinitions> 
          <CheckBox Grid.Column="0" VerticalAlignment="Center"></CheckBox> 
          <Label Grid.Column="1">No. 1</Label> 
         </Grid> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition MinWidth="25"></ColumnDefinition> 
           <ColumnDefinition MinWidth="25"></ColumnDefinition> 
          </Grid.ColumnDefinitions> 
          <CheckBox Grid.Column="0" VerticalAlignment="Center"></CheckBox> 
          <Label Grid.Column="1">No. 1</Label> 
         </Grid> 
        </WrapPanel> 
       </Grid> 
      </StackPanel> 
     </Expander.Content> 
    </Expander> 
</StackPanel> 

+0

Попробуйте ограничить размер StackPanel, так или иначе, пожалуйста, свести к минимуму ваш образец кода. Не нужно столько объектов Grid – stsur

+0

Конечно ... уменьшенный размер. – gwizardry

+0

Играется с StackPanel, но без успеха ... каким образом я должен изменить пределы размера? – gwizardry

ответ

1

StackPanel имеет бесконечный размер в направлении ориентации. поэтому при использовании WrapPanel внутри StackPanel вы должны ограничить размер StackPanel в этом направлении. С другой стороны, сетка имеет конечный размер, поэтому вы можете видеть свою упаковку содержимого.

Смежные вопросы