我在使用 Avalon Docking 时遇到问题,我的第二个面板停靠在底部并设置为 AutoHide。当 UI 运行时,窗格默认加载为停靠/可见。我想让它隐藏/最小化。
<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 代码中切换自动隐藏,在运行时单击停靠标题以使窗格可见/浮动停止工作。因此,您必须连接 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();
}
}
是否有我完全丢失的设置/属性,或/和更好的方法?