2015-01-28 7 views
2

WPF에 확장 기능을 구현하려고하는데 중첩 된 컨트롤이 일부 있습니다. 이 중 하나는 사용자가 창 크기를 변경하는대로 랩하고 싶습니다 랩 패널입니다.랩 컨트롤 패널이 다른 컨트롤에 포함 된 경우 랩되지 않음

이 작업은 WrapPanel의 Grid Control 부모를 꺼내서 자체 App에 저장하지만이 형식이 아닌 경우에 적용됩니다. 이 Grid에 대해 최소 너비를 사용하지 않기 때문에 왜 그것이 감싸지 않는지에 대해 놀라워합니다. 어떤 아이디어? 감사

<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 크기를 제한하려고하면 코드 샘플을 최소화하십시오. 많은 그리드 개체가 필요하지 않습니다. – stsur

+0

확실히 ... 축소 된 크기입니다. – gwizardry

+0

StackPanel로 재생되었지만 성공하지 못했습니다 ... 크기 제한을 어떻게 변경해야합니까? – gwizardry

답변

1

StackPanel의이 배향 방향으로 무한 크기를 갖는다. 따라서 StackPanel 내부에서 WrapPanel을 사용할 때는 그 방향으로 StackPanel의 크기를 제한해야합니다. Grid는 다른 한편으로는 유한 한 크기를 가지므로 내용 포장을 볼 수 있습니다.