2011-09-11 62 views
0

我正在尋找一個顯示兩側面板的WPF選項,並允許您固定/取消固定它們。基本上這意味着一個窗口,在主控制器的左側和右側有一個主控制器和多個不同的面板。這些面板在默認情況下摺疊,只有它們的標題可見,並且如果我將鼠標懸停在它們上面,它們會在主控制器之外展開(不會取代主控制器),但是我也可以選擇固定此面板,這次迫使主要中心控制權調整。不填充高度的WPF固定選項

現在這聽起來非常像大多數對接控制選項,事實上我已經看過AvalonMixModes Synergy,但這些選項的問題在於它們的面板填滿了整個高度。當我將鼠標懸停在屏幕上時,我想要一個特定高度的面板出來,我不希望它填滿屏幕,而且我也找不到其他任何東西。任何人看到這樣的事情?

基本上我自己的想法到目前爲止如何做到這一點涉及編程將面板從一個固定控件移動到另一個非固定控件,但這聽起來很瘋狂醜陋,我很喜歡其他選擇。

回答

0

下面是一個純XAMl示例,介紹如何實現Pin/Unpin功能。

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


    <DockPanel Grid.Column="1"> 
     <Label Content="Main Content Area" FontSize="22" 
       VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    </DockPanel> 

    <StackPanel HorizontalAlignment="Left"> 
     <StackPanel.Style> 
      <Style> 
       <Setter Property="Grid.Column" Value="1"/> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=LeftPinBtn,Path=IsChecked}" Value="True"> 
         <Setter Property="Grid.Column" Value="0"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </StackPanel.Style> 
     <ToggleButton Content="Pin/Unpin" x:Name="LeftPinBtn"/> 
    </StackPanel> 

</Grid> 

在上面的代碼,

  • 在主內容的同一網格列左側面板謊言(浮點)。
  • ToggleButton被選中時,他們跳轉到它們各自的 對接網格列。

您可以自定義此示例&包括將顯示/隱藏面板的鼠標懸停事件。

  • 向右側添加網格列+ HorizontalAlignment="Right" 會爲您提供右側面板。
  • 類似地使用(而不是列)& VerticalAlignment 將增加頂部/底部銷功能。
+0

謝謝,這部分是有用的,但我想我找不到微不足道的鼠標懸停部分。我想我正在尋找的東西就像三態擴展器,代表未鎖定/摺疊(鼠標未結束),未鎖定/展開(鼠標懸停)並固定/展開。基於這三種狀態的價值,我會知道什麼grid.column把它放進去。我甚至不會解決這個問題,當旋轉標題90度時,解除鎖定/摺疊,但仍然讓它實際上崩潰(它似乎保留了寬度,當我這樣做時出於某種原因)。 – Phil