2016-02-17 60 views
0

我的問題是非常具體的,並沒有發現任何相關的任何地方。所以,關於我的生活的第一個問題,我們走吧。 我新來WPF和XAML全球,所以不要猶豫,如果你有任何評論,以改善我的代碼。.NET GridSplitter調整一列的大小

我想達到什麼目的? 我有一個由4個菜單包圍的工作區。這個菜單的可見性由頂部的切換按鈕調節,但是我擦除了所有這些,以便我的代碼更清晰。但我想要的菜單表現得像是彈出來的(我沒有用彈出來真正控制大小和位置,在特定的容器內,以及菜單)。 左側有兩個菜單,右側有兩個菜單。在每一側,兩個菜單不能同時打開。同樣的事情,我清除所有這些要清楚。 我希望我的菜單可以調整大小。但是我左邊的兩個菜單的大小不一樣,應該單獨調整大小。

<Grid > 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 
    <Grid Grid.Column="0" Background="Aqua" Name="LeftMenu"> 
     <Grid Name="LeftMenu1"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition MinWidth="200" MaxWidth="500" Width="300"/> 
       <ColumnDefinition Width="5"/> 
      </Grid.ColumnDefinitions> 
      <Grid Grid.Column="0" Name="MenuContent1"/> 
      <GridSplitter Grid.Column="1" ResizeBehavior="PreviousAndCurrent" HorizontalAlignment="Stretch"/> 
     </Grid> 
    </Grid> 
    <Grid Grid.Column="1" Name="Workspace"/> 
    <Grid Grid.Column="2" Background="Aqua" Name="RightMenu"> 
     <Grid Name="RightMenu1"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="5"/> 
       <ColumnDefinition MinWidth="200" MaxWidth="500" Width="300"/> 
      </Grid.ColumnDefinitions> 
      <GridSplitter Grid.Column="0" ResizeBehavior="CurrentAndNext" HorizontalAlignment="Stretch"/> 
      <Grid Grid.Column="1" Name="MenuContent2"/> 
     </Grid> 
    </Grid> 

</Grid> 

* I僅diplayed一個菜單上的每一側,因爲我擦除的能見度條件,但所述第二菜單是相同的,對於exept寬度。

我的問題是什麼? 正如您所看到的,我使用GridSplitter來調整組成每個菜單的一列網格。 雖然我完全得到我想要的行爲在左邊,但它不能在右邊工作。 當我使用Gridsplitter時,gridsplitter列(「current」)被調整大小,而不是菜單列。我使用了「CurrentandNext」值,因爲它看起來合乎邏輯,但它顯然是不夠的。 如果我用最大寬度和最小寬度固定GridSplitter寬度,則不會發生任何事件,GridSplitter不會移動。

我希望我很清楚,並會歡迎任何幫助!

回答

0

你這樣做完全錯了。

GridSplitters旨在調整列和行的大小。

假設你有一個網格分列:

<Grid Name="RightMenu1"> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="5"/> 
    <ColumnDefinition MinWidth="200" MaxWidth="500" Width="300"/> 
    </Grid.ColumnDefinitions> 

    <GridSplitter Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="3" Background="Black"/> 

    <Border Grid.Column="0" Background="Red" Margin="0,0,3,0"/> 
    <Border Grid.Column="1" Background="Blue"/> 
</Grid> 

你必須保持兩列之間的GridSplitter,以調整列。在這種情況下右對齊水平和垂直拉伸。

+0

感謝您的回覆!你可能有另一個想法,然後調整一個「菜單」? – No74

+0

什麼是菜單? –

+0

好菜單不是正確的詞。一邊是面板,就像您可以在每個工具上找到的一樣,例如Visual Studio上的工具箱。 – No74