2017-02-16 29 views
0

我有以下wpf代碼。分離器移動後Wpf Grid調整不起作用

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="30"/> 
    </Grid.RowDefinitions> 

    <Grid Grid.Row="0"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="5"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 

     <Grid Grid.Column="0"> 
      <Grid.Style> 
       <Style TargetType="Grid"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=toggleButtonShowGeneratedCode, Path=IsChecked}" Value="false"> 
          <Setter Property="Width" Value="Auto"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Grid.Style> 

      <Button Content="Button 1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/> 
     </Grid> 

     <GridSplitter Grid.Column="1" VerticalAlignment="Stretch" Width="5" ResizeDirection="Columns" ResizeBehavior="PreviousAndNext"/> 

     <Grid Grid.Column="2"> 
      <Grid.Style> 
       <Style TargetType="Grid"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=toggleButtonShowGeneratedCode, Path=IsChecked}" Value="false"> 
          <Setter Property="Visibility" Value="Collapsed"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Grid.Style> 

      <Button Content="Button 2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/> 
     </Grid> 
    </Grid> 

    <ToggleButton Grid.Row="1" Name="toggleButtonShowGeneratedCode" Width="50" Content="Toggle"/> 
</Grid> 

切換按鈕應該摺疊並展開按鈕2.當按鈕2摺疊時按鈕1應占據其空間。

這可以在啓動時運行,但是在拆分器移動後,停止工作。

回答

0

當GridSplitter被移動時,它強制改變上一列和下一列的寬度。他們不再是*Auto宣佈,但變成*N其中N是某個數字。因此,列2的內容崩潰時不會摺疊。

建議解決方案:恢復柱#2寬度Auto一些代碼隱藏(罰款視圖視圖交互)

<Grid Grid.Row="0" Name="ResizableGrid"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="5"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 
    <!--...--> 
    <ToggleButton Grid.Row="1" Name="toggleButtonShowGeneratedCode" 
       Width="50" Content="Toggle" 
       Unchecked="toggleButtonShowGeneratedCode_Unchecked"/> 
private void toggleButtonShowGeneratedCode_Unchecked(object sender, RoutedEventArgs e) 
{ 
    ResizableGrid.ColumnDefinitions[2].Width = new GridLength(1, GridUnitType.Auto); 
} 

注意,我添加名稱爲網格從訪問它代碼

+0

謝謝它的作品! – Praboda

相關問題