2017-08-29 25 views
0

avalondockウィンドウのタイトルバーにボタンを追加することはできますか?いずれかのリソースを見つけることもできません。私は通常のWPFウィンドウのタイトルバーにボタンを追加しましたが、avalondockはボタンを追加するオプションがありません。私はこのAvalonDockコントロールの追加ボタン

need to add buttons here

答えて

0

のようにタイトルバー上のヘルプボタンを持つために必要な、古いアプリケーションを持っているのは、あなたがDockablePane

<ad:DockingManager> 
    <ad:DockablePane x:Name="myAwesomePane"> 
     <ad:DockableContent > 
      ... SomeContent ... 
     </ad:DockableContent> 
    </ad:DockablePane> 
</ad:DockingManager> 

を持っていると仮定しましょう、あなたのウィンドウがロードされた後に次に、あなたにDockPanelを見つけることができますペインのビジュアルツリーを開き、ボタンを追加します。

private void MainWindow_OnLoaded(object sender, RoutedEventArgs e) 
{ 
    var dockPanel = FindChild<DockPanel>(myAwesomePane); 
    if (dockPanel != null) 
    { 
     var button = new Button {Content = "Help", Margin = new Thickness(1), Width = 40}; 
     button.Click += (o, args) => MessageBox.Show(this, "HELP"); 
     DockPanel.SetDock(button, Dock.Right); 
     dockPanel.Children.Insert(dockPanel.Children.Count - 1, button); 
    } 
} 

/// <summary> 
/// Find first child of given type 
/// </summary> 
public static T FindChild<T>(DependencyObject parent) where T : DependencyObject 
{ 
    var childrenCount = VisualTreeHelper.GetChildrenCount(parent); 

    T result = null; 
    for (int i = 0; i < childrenCount; i++) 
    { 
     var dObj = VisualTreeHelper.GetChild(parent, i); 

     result = dObj as T; 
     if (result != null) 
     { 
      break; 
     } 

     result = FindChild<T>(dObj); 
     if (result != null) 
     { 
      break; 
     } 
    } 

    return result; 
} 

Help button しかし、私は解決策を調べていなかったいくつかの制限があります:ペインはあなたがそれをしなければならない別の場所

  • にドッキングした後

    • ボタンが消えはすべてのあなたのペインを手動で

  • +0

    例外を取得Xceed。 Wpf.AvalonDock.Layout.LayoutAnchorable 'はVisualまたはVisual3Dではありません – murmansk

    +0

    あなたはどのバージョンのAvalon Dockを使用していますか?私はスクリーンショットのように1.3の例を書いた。 <:LayoutAnchorablePane avalonDock> Mitya

    +0

    @murmansk 'LayoutAnchorable'は、それが、バージョン2.0 – Mitya

    関連する問題