0

次の AvalonDock (バージョン 1.3 を使用しています) レイアウトがあります。

<AvalonDock:DockingManager Grid.Row="1"
                               x:Name="MainDockingManager"
                               Loaded="MainDockingManager_Loaded">
        <AvalonDock:ResizingPanel Orientation="Vertical">
            <AvalonDock:ResizingPanel Orientation="Horizontal">
                <AvalonDock:DockablePane x:Name="LeftDockablePane"
                                         AvalonDock:ResizingPanel.ResizeWidth="250" />
                <AvalonDock:ResizingPanel Orientation="Vertical">
                    <AvalonDock:DocumentPaneResizingPanel>
                        <AvalonDock:DocumentPane x:Name="documentPane"/>
                    </AvalonDock:DocumentPaneResizingPanel>
                    <AvalonDock:DockablePane x:Name="BottomDockablePane"
                                             AvalonDock:ResizingPanel.ResizeHeight="200" />
                </AvalonDock:ResizingPanel>
            </AvalonDock:ResizingPanel>
        </AvalonDock:ResizingPanel>
    </AvalonDock:DockingManager>

これは DockingManager の Loaded イベントのイベント ハンドラーです。

    void MainDockingManager_Loaded( object sender, RoutedEventArgs e )
    {
        _layoutStateFilePath = Path.Combine( ApplicationSettingsService.UserSettingsDirectory, LayoutStateFileName );

        if ( File.Exists( _layoutStateFilePath ) )
        {
            MainDockingManager.RestoreLayout( _layoutStateFilePath );
        }
    }

ウィンドウを閉じるイベント ハンドラ:

    private void ApplicationViewsWindow_Closing( object sender, CancelEventArgs e )
    {
        MainDockingManager.SaveLayout( _layoutStateFilePath );
    }

すべての DockablePanes の保存と復元は正常に機能しますが、問題は DocumentPane が正しく復元されないことです。新しいドキュメントを開こうとすると、それらが表示されません。

Visual Studio のイミディエイト ウィンドウを使用して、次のクエリを作成しました。

電話する前にMainDockingManager.RestoreLayout()

documentPane.IsMainDocumentPane
true

呼び出した後RestoreLayout():

documentPane.IsMainDocumentPane
null
MainDockingManager.MainDocumentPane.GetHashCode()
16306004
documentPane.GetHashCode()
15125992

呼び出し後にこれをRestoreLayout()実行しても機能しません。

MainDockingManager.MainDocumentPane = documentPane;

私が間違っていること、またはここに欠けているものがあるかどうか、何か考えはありますか?

4

1 に答える 1

0

新しいドキュメントを追加するときに、名前付きの DocumentPane (「documentPane」) を使用しないことで、これを修正しました。代わりに、DockingManager.MainDocumentPane プロパティを使用して DocumentPane を操作しました。

于 2012-11-12T11:22:43.433 に答える