AvalonDock控件上的添加按钮

是否可以在avalondock窗口标题栏上添加按钮? 也没有找到任何资源。 我已经添加了正常WPF窗口标题栏上的按钮,但是avalondock没有添加按钮的选项。 我有一个旧的应用程序,需要有这样的标题栏上的帮助按钮

需要在这里添加按钮


假设你有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;
}

但是我没有找到解决方案的几个限制:

  • 按钮在窗格停靠到另一个地方后消失

  • 您必须手动执行所有窗格

  • 链接地址: http://www.djcxy.com/p/57397.html

    上一篇: Additonal button on AvalonDock control

    下一篇: Disabling 'Dock as Tabbed document' in Avalandock