2016-09-14 16 views
0

他のgrid列が折りたたまれていないときにエキスパンダーを折りたたんでしようとしています。WPF - 折りたたみ時のエキスパンダーが他のグリッド列のサイズを変更しない

私はこれをexpander_collapsedで試しましたが、グリッドは全体のスペースを占有していますが、次に展開にのみアクセスできません。

private void Expander_Expanded(object sender, RoutedEventArgs e) 
     { 
      groupBoxMain.Visibility = Visibility.Visible; 
     } 

     private void Expander_Collapsed(object sender, RoutedEventArgs e) 
     { 
      MainGrid.ColumnDefinitions[0].Width = new GridLength(1, GridUnitType.Star); 
      groupBoxMain.Visibility = Visibility.Hidden; 
     } 

XAMLコード:

<Grid x:Name="MainGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="Auto" Width="Auto"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="90*"/> 
      <ColumnDefinition Width="177*"/> 
      <ColumnDefinition Width="133*"/> 
     </Grid.ColumnDefinitions> 
     <Grid Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="Auto" Width="Auto"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="8*"/> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="680*"/> 
       <RowDefinition Height="31*"/> 
      </Grid.RowDefinitions> 
      <GroupBox Name="groupBoxMain" BorderBrush="Black" Grid.ColumnSpan="3" Grid.Column="1" Grid.Row="0" Margin="0,0,0,6"> 
       <DataGrid Background="DarkGray" CanUserResizeColumns="True" CanUserSortColumns="True"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Binding="{Binding BackupVersionNumber}" Header="File Name" MinWidth="100" FontFamily="Default Font" FontSize="16"/> 
         <DataGridTextColumn Binding="{Binding BackupDateTime}" Header="Total Time" MinWidth="100" FontFamily="Default Font" FontSize="16"/> 
         <DataGridTextColumn Binding="{Binding SavedBy}" Header="Total Packet" MinWidth="100" FontFamily="Default Font" FontSize="16"/> 
        </DataGrid.Columns> 
       </DataGrid> 
      </GroupBox> 
      <Expander ExpandDirection="Right" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="0" IsExpanded="True" Width="35" Grid.Row="0" Expanded="Expander_Expanded" Collapsed="Expander_Collapsed"> 
       <Expander.Header> 
        <TextBlock Text="Select Manifest File" Width="Auto" 
          FontSize="11"> 
         <TextBlock.LayoutTransform> 
          <TransformGroup> 
           <RotateTransform Angle="90"/> 
          </TransformGroup> 
         </TextBlock.LayoutTransform> 
        </TextBlock> 

       </Expander.Header> 
       <Grid Background="#FFE5E5E5" Width="0"/> 
      </Expander> 
     </Grid> 
     <Grid HorizontalAlignment="Stretch" Grid.Column="1" Grid.ColumnSpan="2" VerticalAlignment="Stretch" Height="Auto" Width="Auto" Margin="2,0,0,0.2"> 
       <Grid Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="6" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,10.4,0.267,0.2" Background="{DynamicResource {x:Static SystemColors.AppWorkspaceBrushKey}}" /> 

     </Grid> 
    </Grid> 

私は私のメインgridに3列があります。 1つはexpanderであり、他の2つはgridです。

expanderが折りたたまれているときに、他の2つの列がスペースを占めるようにします。

+0

にもこの質問に答えるに役立つかもしれないよると、XAMLは – DonGru

+0

追加されましたがxamlコード – PSDebugger

答えて

2

まず、あなたのグループボックスはあなたのエキスパンダーにあるべきだと思います。グリッドの行を修正する必要があります。これは、Grid.Row = "3"が存在しないためです。 MainGridのカラム0のグリッドで幅をAutoに変更する必要があります。そこの注意を必要とする、おそらく他のものがありますが、これはあなたが何をする必要があるかを考え出すの開始得るのを助ける必要があります。

<Grid x:Name="MainGrid"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="177*" /> 
     <ColumnDefinition Width="133*" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="680*" /> 
     <RowDefinition Height="31*" /> 
    </Grid.RowDefinitions> 
    <Grid Grid.Column="0"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="8*" /> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <Expander ExpandDirection="Right" 
        Grid.Column="0" 
        IsExpanded="True"> 
      <Expander.Header> 
       <TextBlock Text="Header"> 
        <TextBlock.LayoutTransform> 
         <RotateTransform Angle="90" /> 
        </TextBlock.LayoutTransform> 
       </TextBlock> 
      </Expander.Header> 
      <GroupBox Name="groupBoxMain" 
         BorderBrush="Black" 
         Grid.Row="0" 
         Margin="0,0,0,6"> 
       <DataGrid Background="DarkGray" 
          CanUserResizeColumns="True" 
          CanUserSortColumns="True"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Binding="{Binding BackupVersionNumber}" 
              Header="File Name" 
              MinWidth="100" 
              FontFamily="Default Font" 
              FontSize="16" /> 
         <DataGridTextColumn Binding="{Binding BackupDateTime}" 
              Header="Total Time" 
              MinWidth="100" 
              FontFamily="Default Font" 
              FontSize="16" /> 
         <DataGridTextColumn Binding="{Binding SavedBy}" 
              Header="Total Packet" 
              MinWidth="100" 
              FontFamily="Default Font" 
              FontSize="16" /> 
        </DataGrid.Columns> 
       </DataGrid> 
      </GroupBox> 
     </Expander> 
    </Grid> 
    <Grid Grid.Column="1" 
      Grid.ColumnSpan="2" 
      Height="Auto" 
      Width="Auto" 
      Margin="2,0,0,0.2"> 
     <Grid Grid.Row="3" 
       Grid.Column="0" 
       Grid.ColumnSpan="6" 
       Margin="0,10.4,0.267,0.2" 
       Background="{DynamicResource {x:Static SystemColors.AppWorkspaceBrushKey}}" /> 
    </Grid> 
</Grid> 

enter image description here

関連する問題