首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AvalonDock控件上的附加按钮

AvalonDock控件上的附加按钮
EN

Stack Overflow用户
提问于 2017-08-29 10:20:26
回答 1查看 778关注 0票数 0

雪崩窗口标题栏上的添加按钮可以完成吗?在上面也找不到任何资源。我已经在普通WPF窗口的标题栏上添加了按钮,但是雪崩坞没有添加按钮的选项。我有一个旧的应用程序,需要像这样在标题栏上有帮助按钮

EN

回答 1

Stack Overflow用户

发布于 2017-08-29 13:47:08

假设你有DockablePane

代码语言:javascript
运行
复制
<ad:DockingManager>
    <ad:DockablePane x:Name="myAwesomePane">
        <ad:DockableContent >
            ... SomeContent ...
        </ad:DockableContent>
    </ad:DockablePane>
</ad:DockingManager>

然后,在加载窗口之后,您可以在窗格可视化树中找到DockPanel并向其添加按钮。

代码语言:javascript
运行
复制
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;
}

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

  • 按钮在窗格停靠到另一个地方后消失。
  • 你必须手动完成你所有的窗格
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45936580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档