2017-08-29 44 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的例子。 – Mitya

    +0

    @murmansk'LayoutAnchorable'是從版本2.0 – Mitya