2014-01-31 34 views
1

我對調整大小有疑問。通過移動拆分器調整父級的大小

我知道分離器的功能是拆分表單中的某些元素,而無需調整父元素的大小。分割器將例如100%的父母代分裂。 40%和60%。但在我的情況下,我需要一個分離器或類似的東西,調整父母(UserControl),而不是其他元素(面板)。

例如我有2個面板的高度爲50px和50px。他們之間有一個分離器,現在將一個面板調整爲70px。第二個面板應該保持50px,UserControl應該調整到120px。

此外,在我的應用程序中,UserControl被添加到autoscroll = true的面板中以顯示垂直滾動條。有沒有人有想法實現這一點?

enter image description here

回答

0

你可以嘗試編碼分離器事件,將改變你的窗口大小裏面的一些動作。然而,這是違反直覺的(不遵循標準的Windows UI),窗口將在內部動作之後重新調整大小。 考慮設置網格行定義的方式,只有在調整窗口大小時才調整大小。例如以下爲列。這個例子來自一個工作的實際頁面,它可以完成你所要求的任務(當窗口被調整大小時,右側的列不會被擠壓或拉伸)。請注意,實際頁面xaml中的分隔符遠低於(在所有內容面板之後)。

 <Grid.ColumnDefinitions> 
      <ColumnDefinition Name="ThirdCol0" Width="353"></ColumnDefinition> 
      <ColumnDefinition Name="ThirdCol1" Width="*"></ColumnDefinition> 
      <ColumnDefinition Name="ThirdCol2" Width="*" MaxWidth="100"></ColumnDefinition> 
      <ColumnDefinition Name="ThirdCol3" Width="117" MaxWidth="267"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 

     <!-- here there are different panels etc --> 

     <GridSplitter x:Name="MidSplitter" DragCompleted="MidSplitter_DragCompleted" SnapsToDevicePixels="True" Grid.Row="0" Grid.Column="1" 
      Width="5" Opacity="0.2" VerticalAlignment="Stretch" HorizontalAlignment="Right" 
      ShowsPreview="False"></GridSplitter> 
     <GridSplitter x:Name="Col2Splitter" DragCompleted="MidSplitter_DragCompleted" Grid.Row="0" Grid.Column="2" 
      Width="5" Opacity="0.2" VerticalAlignment="Stretch" HorizontalAlignment="Right" 
      ShowsPreview="False"></GridSplitter> 
     <GridSplitter DragCompleted="MidSplitter_DragCompleted" Grid.Row="0" Grid.Column="0" 
      Width="5" Opacity="0.2" VerticalAlignment="Stretch" HorizontalAlignment="Right" 
      ShowsPreview="False"></GridSplitter> 
+0

不幸的是,問題是關於WinForms,而不是WPF。 – hangy

0

當用戶控件的大小變化,你需要:

  • 的PANEL1被調整
  • 的是Panel2保持其高度不變

我說得對不對?

在這種情況下,你不需要使用分離器,但控件的Dock屬性:

  • panel1.Dock屬性DockStyle.Fill:在PANEL1將採取一切可用的空間,在用戶控件
  • panel2.Dock屬性設置爲DockStyle.Bottom:該是Panel2將保持其初始高度留在的用戶控件

我希望它有助於底部。

+0

我將它們設置爲Top和Fill。不過,我測試了你的設置,但它沒有改變行爲。 「你不需要使用分離器」是什麼意思?用戶應該如何調整面板的大小? – MarcelD

+0

@MarcelD傳統上,如果UserControl要改變大小,你應該拖動一個外部邊緣 - 而不是*在UserControl內部的邊緣。 – jnm2

相關問題