4

使用 DockState 和 AutoHide,我正在寻找以下内容:

  1. 查明 DockContent 是否处于自动隐藏模式
  2. 能够在“常规”和自动隐藏模式之间切换。
  3. 当 AutoHide Dock 进入视野时触发事件。
  4. 当 AutoHide 停靠栏“离开”并且现在停靠回其选项卡时触发事件。

回答维基:

  1. IsAutoHide - 得到:

    private WeifenLuo.WinFormsUI.Docking.DockState[] AutoHideStates = new WeifenLuo.WinFormsUI.Docking.DockState[] {
        WeifenLuo.WinFormsUI.Docking.DockState.DockBottomAutoHide,
        WeifenLuo.WinFormsUI.Docking.DockState.DockLeftAutoHide,
        WeifenLuo.WinFormsUI.Docking.DockState.DockRightAutoHide,
        WeifenLuo.WinFormsUI.Docking.DockState.DockTopAutoHide };
    
    public bool IsAutoHide { get { return AutoHideStates.Contains(DockContent.DockState); } }
    
  2. IsAutoHide - 设置:还没有代码 - 基本上遍历模式或使用可互换模式的字典(即 DockBottomAutoHide 到 DockBottom)

  3. 我不知道,但这看起来很有趣,可能有这个想法。

  4. 我不知道。
4

1 回答 1

2

1 是实现此目的的一种不错的方法。该库有一个内部方法,DockHelper.IsDockStateAutoHide()它基本上做同样的事情。这实际上应该成为公共扩展方法并作为库的一部分包含在内。

2 你的解决方案很好。

3 和 4 可能最好作为 : 中的新事件来DockPanel实现ActiveAutoHideContentChanged。然后,您可以自行跟踪最后一个自动隐藏内容,当引发事件时,如果新值不为空,您知道 #3 正在发生,如果最后一个已知值不为空,则 #4 正在发生。

随意在GitHub 上打开请求以添加事件。

于 2012-12-12T21:51:49.807 回答