2012-10-17 3 views
2

새로 WPF에 새로 추가하고 Avalon Dock을 사용하기 시작했습니다. 툴바에 문제가 있습니다. 툴바 트레이에서 툴바를 드래그하면 트레이가 확장되어 Avalon Dock 컨테이너 뒤에 갇 힙니다. 어떻게 사이즈를 변경합니까? 도구 막대가 뒤에 붙어 있지 않도록 자동으로 내려 눕 힙니다. 항상도구 모음 Avalon Dock 뒤에서 붙잡음

<Grid> 
<Grid.RowDefinitions> 
    <RowDefinition Height="Auto"/>//<-- for menu 
    <RowDefinition Height="Auto"/>//<-- for toolbar 
    <RowDefinition Height="*"/>//<-- for docking manager 
    <RowDefinition Height="Auto"/>//<-- for status bar 
</Grid.RowDefinitions> 
</Grid> 

자동차를 사용하거나 그리드를 시작 동적 레이아웃 준비를위한 길이 : 여기에 .. 감사합니다 :)

<Window x:Class="PSWPF0._001.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:avalonDock="http://avalondock.codeplex.com" 
    Title="MainWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="381" d:DesignWidth="754" SizeToContent="WidthAndHeight"> 
<Grid DataContext="{Binding}" AllowDrop="True" ClipToBounds="True" IsItemsHost="False"> 
    <DockPanel HorizontalAlignment="Stretch" Margin="2,0,0,0" Name="dockPanel1" VerticalAlignment="Stretch" /> 


    <Menu Height="22" HorizontalAlignment="Stretch" Name="menu1" VerticalAlignment="Top" Margin="2,0,-2,0" DockPanel.Dock="Top"> 
     <MenuItem Header="File"> 
      <MenuItem Header="New" Click="MenuItem_Click_4"> 
       <MenuItem Header="Project" /> 
       <MenuItem Header="C Source File" /> 
       <MenuItem Header="Text File" /> 
      </MenuItem> 
      <MenuItem Header="Open" Click="MenuItem_Click_5"/> 
      <MenuItem Header="Save" /> 
     </MenuItem> 
     <MenuItem Header="Edit"> 
      <MenuItem Header="Undo" /> 
      <MenuItem Header="Redo" /> 
      <Separator /> 
      <MenuItem Header="Copy" /> 
      <MenuItem Header="Cut" /> 
      <MenuItem Header="Paste" /> 
      <MenuItem Header="Delete" /> 
      <Separator /> 
      <MenuItem Header="Find" /> 
     </MenuItem> 
     <MenuItem Header="View" Click="MenuItem_Click_1"> 
      <MenuItem Header="Project Dashboard"/> 

      <MenuItem Header="Project Explorer" /> 
     </MenuItem> 
     <MenuItem Header="Help" Click="MenuItem_Click"> 
      <MenuItem Header="About" Click="MenuItem_Click_3"/> 
      <MenuItem Command="ApplicationCommands.Help" Header="Help Content" /> 
     </MenuItem> 
    </Menu> 



    <ToolBarTray DockPanel.Dock="Top" Background="LightGray" VerticalAlignment="Top" Margin="2,23,-2,0"> 
     <ToolBar Band="1" BandIndex="1"> 
      <Button>New</Button> 
      <Button>Open</Button> 
      <Button>Exit</Button> 
     </ToolBar> 
     <ToolBar BandIndex="2" Band="2"> 
      <Button>Undo</Button> 
      <Button>Redo</Button> 
     </ToolBar> 
     <ToolBar Band="2" BandIndex="2"> 
      <Button>Paint</Button> 
      <Button>Spaell</Button> 
      <Separator /> 
      <Button>Cut</Button> 
      <Button>Copy</Button> 
      <Button>Paste</Button> 
      <Separator /> 
      <Button>Find</Button> 
      <Button>Replace</Button> 
     </ToolBar> 
    </ToolBarTray> 


    <avalonDock:DockingManager x:Name="dockingManager" Margin="0,52,0,28" VerticalAlignment="Stretch" DockPanel.Dock="Top" Grid.Column="0" AllowMixedOrientation="True" IsManipulationEnabled="False" UseLayoutRounding="True"> 
     <avalonDock:LayoutRoot>  

      <avalonDock:LayoutPanel Orientation="Vertical"> 
       <avalonDock:LayoutDocumentPaneGroup DockMinHeight="70"> 
        <avalonDock:LayoutDocumentPane> 
         <avalonDock:LayoutDocument Title="Doc1"> 
          <TextBox/> 
         </avalonDock:LayoutDocument> 
         <avalonDock:LayoutDocument Title="Doc2"> 
          <TextBox/> 
         </avalonDock:LayoutDocument> 
        </avalonDock:LayoutDocumentPane> 
        <avalonDock:LayoutDocumentPane > 

        </avalonDock:LayoutDocumentPane> 
       </avalonDock:LayoutDocumentPaneGroup> 

       <avalonDock:LayoutAnchorablePaneGroup IsMaximized="True" DockMinHeight="70" DockHeight="250"> 
        <avalonDock:LayoutAnchorablePane> 
         <avalonDock:LayoutAnchorable Title="Output"> 
          <RichTextBox/> 
         </avalonDock:LayoutAnchorable> 

         <avalonDock:LayoutAnchorable Title="Error List"> 
          <TextBox/> 
         </avalonDock:LayoutAnchorable> 

        </avalonDock:LayoutAnchorablePane> 
       </avalonDock:LayoutAnchorablePaneGroup> 


       </avalonDock:LayoutPanel> 



      <avalonDock:LayoutRoot.RightSide> 
       <avalonDock:LayoutAnchorSide> 
        <avalonDock:LayoutAnchorGroup> 

         <avalonDock:LayoutAnchorable Title="Properties" AutoHideMinWidth="200"> 
          <RichTextBox/> 
         </avalonDock:LayoutAnchorable> 

         <avalonDock:LayoutAnchorable Title="Project Explorer" AutoHideMinWidth="200"> 
          <RichTextBox/> 
         </avalonDock:LayoutAnchorable> 

         <avalonDock:LayoutAnchorable Title="File Explorer" AutoHideMinWidth="200"> 
          <RichTextBox/> 
         </avalonDock:LayoutAnchorable> 
        </avalonDock:LayoutAnchorGroup> 

       </avalonDock:LayoutAnchorSide> 
      </avalonDock:LayoutRoot.RightSide> 



      <avalonDock:LayoutRoot.LeftSide> 

       <avalonDock:LayoutAnchorSide> 
        <avalonDock:LayoutAnchorGroup> 

         <avalonDock:LayoutAnchorable Title="Project Dashboard" AutoHideMinWidth="200"> 
          <RichTextBox/> 
         </avalonDock:LayoutAnchorable> 

         <avalonDock:LayoutAnchorable Title="Hardware Toolbox" IsMaximized="True" CanAutoHide="True" IsActive="True" AutoHideMinWidth="200"> 
          <ListBox/> 
         </avalonDock:LayoutAnchorable> 

         <avalonDock:LayoutAnchorable Title="Logic Building Blocks" AutoHideMinWidth="200"> 
          <RichTextBox/> 
         </avalonDock:LayoutAnchorable>       


        </avalonDock:LayoutAnchorGroup> 
       </avalonDock:LayoutAnchorSide> 
      </avalonDock:LayoutRoot.LeftSide>     
     </avalonDock:LayoutRoot> 
     </avalonDock:DockingManager> 




    <StatusBar Height="22" HorizontalAlignment="Stretch" Margin="2,322,0,0" Name="statusBar1" VerticalAlignment="Bottom" DockPanel.Dock="Bottom"/> 
</Grid> 

답변

2

나는이 같은 동적 레이아웃을 사용하는 것이 좋을 것 내 XAML입니다

Ado

0

나는 이것이 오래되었다는 것을 알고 있지만, o 이것을 (WPF에서 .NET 2.0으로 AD 2.0) 계산해보십시오. 그래서 이것을 소스로 사용할 다른 사람들을 위해 게시 할 것입니다. adospace에서 응답은 작동합니다. 그러나 코드도 변경해야합니다.

필요가없는 경우 DockingManager에서 위쪽 여백을 제거하십시오. 그리드의 RowDefinitions을 사용하기 전에 여전히 최대 여백이 설정되었음을 알 때까지 내 레이아웃이 너무 이상해 보였습니다. 또한 다른 작업이없는 한 메뉴에서 DockPanel.Dock="Top"을 제거하십시오. 나는 VerticalAlignment도 설정하지 않았습니다.

다음은 다중 대역을 포함하여 잘 작동하는 기능입니다. AD 테스트 애플 리케이션 중 하나를 사용하여, 그것은 이미 그 루트 그리드 (gdlayoutRoot)를 가지고 있으므로, 그것을 사용할 수 있습니다.

<Grid Name="gdlayoutRoot"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Menu IsMainMenu="True" Name="menuMain" Grid.Row="0"> 
     <MenuItem Header="_File" Name="File"> 
      <MenuItem Header="_New" Name="New" /> 
     </MenuItem> 
     <MenuItem Header="_Edit" Name="Edit" /> 
     <MenuItem Header="_Document" Name="Document"> 
      <MenuItem Header="Import From _XML"> 
       <MenuItem Header="Entity" Name="ImportFromXML" Click="ImportFromXML_Click" /> 
      </MenuItem> 
     </MenuItem> 
    </Menu> 
    <ToolBarTray Grid.Row="1"> 
     <ToolBar Band="0" BandIndex="0"> 
      <Button Content="Stuff"/> 
     </ToolBar> 
    </ToolBarTray> 
    <ad:DockingManager x:Name="dockingManager" Grid.Row="3">