Avalon Dock Auto隐藏加载问题

时间:2012-04-12 19:03:48

标签: wpf avalondock

我遇到了Avalon Docking的问题,我的第二个面板停靠在底部并设置为AutoHide。 当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论坛上尝试了各种“黑客”,OnLoad,你可以

outputDockablePane.ToggleAutoHide();

这是有效的,这意味着,当加载UI时,窗格将被隐藏。但是,一旦您在.cs代码中切换自动隐藏,在运行时单击Dock标头以使窗格可见/浮动停止工作。所以你必须连接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();
        }
    }

是否存在我完全缺失的设置/属性,或/和更好的方式?

1 个答案:

答案 0 :(得分:0)

4年仍然Avalon Docking有同样的问题。虽然我还没有找到合适的解决方案,但我试图改进你的解决方法逻辑。

private void OnDockingManagerMouseUp(object sender, MouseButtonEventArgs e)
{
     if (outputDockableContent.IsAutoHidden)
     {
        outputDockableContent.IsActive = false;
     }
}