4

2 番目のパネルが下部にドッキングされ、AutoHide に設定されている Avalon Docking に問題があります。UI が実行されると、ペインは既定で Docked/Visible として読み込まれます。非表示/最小化したいと思います。

<ad:DockingManager>
    <ad:ResizingPanel Orientation="Vertical">
        <ad:DocumentPane>
            <ad:DocumentContent>
                <... data grid that fills the view>
            </ad:DocumentContent>
        <ad:DocumentPane>
       <ad:DockablePane>
            <ad:DockableContent Title="output" DockableStyle="AutoHide" IsCloseable="False">
                <...some control>

Avalon フォーラムで提案されているさまざまな「ハック」を試してみました。

outputDockablePane.ToggleAutoHide();

つまり、UI が読み込まれると、ペインは非表示になります。ただし、.cs コードで自動非表示を切り替えると、実行時にドック ヘッダーをクリックして、ペインを表示/フロートすることができなくなります。したがって、 DockingMananger.OnMouseUp() を接続し、いくつかのブール値の状態を解析して、手動で ToggleAutoHide() を呼び出す必要があります - 私はその時だけだと思います。私にはハックのようです。

適切でクリーンな解決策が見つかるまで、今のところ私がやっていることは次のとおりです。

    private void OnDockManagerLoaded(object sender, RoutedEventArgs e)
    {
        if(_firstTimeLoad && !_isDataGridLoaded)
        {
                outputDockablePane.ToggleAutoHide();
                _forcedToAutoHide = true;
        }
    }

    private void OnDockingManagerMouseUp(object sender, MouseButtonEventArgs e)
    {
        if (_forcedToAutoHide)
        {
            _forcedToAutoHide = false;

            outputDockableContent.Activate();
            outputDockablePane.ToggleAutoHide();
        }
    }

私が完全に欠落している設定/プロパティ、または/およびより良い方法はありますか?

4

1 に答える 1

0

まだ 4 年 Avalon Docking には同じ問題があります。まだ適切な解決策を見つけていませんが、回避策のロジックを改良しようとしました。

private void OnDockingManagerMouseUp(object sender, MouseButtonEventArgs e)
{
     if (outputDockableContent.IsAutoHidden)
     {
        outputDockableContent.IsActive = false;
     }
}
于 2015-08-24T08:21:43.780 に答える