2

WPFを初めて使用し、AvalonDockの使用を開始しました。ツールバーに問題があります。ツールバートレイのツールバーをドラッグすると、トレイが展開されてAvalon Dockコンテナの後ろに詰まります。ツールバーが後ろに引っ掛からないように、自動的にサイズを変更するにはどうすればよいですか?これが私のXAMLです。ありがとう:)

<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>

4

2 に答える 2

2

次のような動的レイアウトを使用することをお勧めします。

<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>

子コントロールの動的なレイアウト配置には、常に Auto または Start グリッドの長さを使用します。

あど

于 2012-12-12T11:36:58.230 に答える
0

これが古いことは知っていますが、これを理解するのにも時間がかかりました (.NET 4.5 を使用する WPF 上の AD 2.0)。これをソースとして使用している可能性のある他の人のために投稿します。adospace作品からの答え。ただし、コードも変更する必要があります。

別の必要がない限り、DockingManager から上部マージンを削除します。グリッドのRowDefinitions. また、DockPanel.Dock="Top"何か他のことが起こっていない限り、メニューから削除してください。私もセットしていませんVerticalAlignment

これは、複数のバンドを含め、うまく機能するものです。AD テスト アプリの 1 つを使用すると、そのルート グリッド (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">
于 2015-01-07T08:21:56.293 に答える