4

DockState と AutoHide を使用して、次のことを探しています。

  1. DockContent が AutoHide モードかどうかを調べる
  2. 「通常」モードと自動非表示モードを切り替える機能。
  3. AutoHide ドックが表示されたときにイベントをトリガーします。
  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 あなたのソリューションは良いです。

DockPanel3 & 4 は、 :の新しいイベントとして実装するのがおそらく最適でしょうActiveAutoHideContentChanged。その後、最後の autohide コンテンツを自分で追跡できます。イベントが発生すると、新しい値が null でない場合は #3 が発生し、最後の既知の値が null でない場合は #4 が発生していることがわかります。

イベントを追加するには、GitHubで自由にリクエストを開いてください。

于 2012-12-12T21:51:49.807 に答える