2017-08-29 226 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