WPF 用户控件父级

2023-11-26

我有一个用户控件,我将其加载到MainWindow在运行时。我无法从包含窗口获取句柄UserControl.

我努力了this.Parent,但它始终为空。有谁知道如何从 WPF 中的用户控件获取包含窗口的句柄?

以下是控件的加载方式:

private void XMLLogViewer_MenuItem_Click(object sender, RoutedEventArgs e)
{
    MenuItem application = sender as MenuItem;
    string parameter = application.CommandParameter as string;
    string controlName = parameter;
    if (uxPanel.Children.Count == 0)
    {
        System.Runtime.Remoting.ObjectHandle instance = Activator.CreateInstance(Assembly.GetExecutingAssembly().FullName, controlName);
        UserControl control = instance.Unwrap() as UserControl;
        this.LoadControl(control);
    }
}

private void LoadControl(UserControl control)
{
    if (uxPanel.Children.Count > 0)
    {
        foreach (UIElement ctrl in uxPanel.Children)
        {
            if (ctrl.GetType() != control.GetType())
            {
                this.SetControl(control);
            }
        }
    }
    else
    {
        this.SetControl(control);
    }
}

private void SetControl(UserControl control)
{
    control.Width = uxPanel.Width;
    control.Height = uxPanel.Height;
    uxPanel.Children.Add(control);
}

尝试使用以下方法:

Window parentWindow = Window.GetWindow(userControlReference);

The GetWindow方法将为您遍历 VisualTree 并找到托管控件的窗口。

您应该在加载控件后运行此代码(而不是在 Window 构造函数中)以防止GetWindow返回方法null。例如。连接一个事件:

this.Loaded += new RoutedEventHandler(UserControl_Loaded); 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 用户控件父级 的相关文章

随机推荐

  • 无法打开另一个 Excel 文件(当通过 .net 打开一个 Excel 时)

    我设计了一个 net 应用程序 它将在登录时打开 Excel 文件并用它来打印报告 当用户注销时它将被关闭 我将 Excel 文件的可见设置为 false 以便用户不知道后台进程 但是 如果任何人在此期间打开任何其他 Excel 文件 我的
  • 有没有办法使用javascript检测网络连接类型? [复制]

    这个问题在这里已经有答案了 我想知道是否有任何方法可以检查用户是否使用 javascript 从 2G 3G 4G 或 WiFi 连接 据我所知 只有 Mozilla 提供了网络信息 API 它有助于检测一般连接类型 如 wifi 蜂窝 等
  • 如何在 Caliburn.Micro 中绑定按键手势?

    如何让 Caliburn Micro 将按键手势映射到 ViewModel 上的操作方法 例如 我想实现一个选项卡式界面 并且希望我的 ShellViewModel 有一个 NewTab 方法 用户应该能够通过按键盘上的 Ctrl T 来调
  • 如何通过我的网站分享 Facebook 活动?

    我想在我的网站上分享活动 有按钮 喜欢它 但没有像 加入活动 这样的按钮 有任何想法吗 None
  • 如何使用C++流优雅地读取整数?

    我有一个充满以下格式行的文件 1 2 3 我只想使用 C 流加载数字 最优雅的方法是什么 我只考虑了 cin get 并检查每个字符是否是数字 我认为这将是最快但又优雅的方式 int a b c scanf d d d a b c
  • “成功但有错误”的 HTTP 状态代码?

    我查了一下 但没有看到请求成功时的 HTTP 状态代码 但在 不返回点 之后出现错误 例如 假设您处理一个请求 将其提交给数据库 但是在返回结果时您耗尽了内存 或者遇到了 NPE 或者发生了什么 它would曾经是200响应 但现在 在内部
  • iOS 7 的持久 UDID 等效项? [复制]

    这个问题在这里已经有答案了 首先我想说我完全清楚uniqueIdentifier已被弃用 并且有identifierForVendor advertisingIdentifier 我的问题是 是否有办法完全持久设备标识符在重启 应用程序卸载
  • 我有一个可执行文件的核心转储,该可执行文件不是使用调试符号构建的。我可以恢复 argv 内容吗?

    我有一个可执行文件的核心转储 该可执行文件不是使用调试符号构建的 我可以恢复 argv 内容以查看命令行是什么吗 如果我运行 gdb 我可以看到回溯 并且可以导航到 main 框架 一旦到达那里 有没有办法在不知道其确切地址的情况下恢复 a
  • Boost单元测试主要功能?

    我该如何定义自己main 使用 boost 进行测试时的功能 Boost 使用它自己的 main 函数 但我使用自定义内存管理器 并且需要在分配任何内存之前对其进行初始化 否则我会收到错误 我不相信你真的需要你自己的主要 我认为你的情况要好
  • 如何从 Homebrew 重新安装 python@2?

    我在使用 openssl 和 python 2 时遇到了问题 这里已经解释了 未解决 记录的重新安装 Python 和 openssl 的解决方法不起作用 因此我决定卸载并重新安装 Python 问题是 当您尝试使用brew 安装Pytho
  • java Callable FutureTask Excecuter:如何监听已完成的任务

    我对执行者服务很陌生 喜欢自己做所有事情 但我认为是时候信任这些服务了 我想手过去Executer a Runnable 执行器将其包装在一个FutureTask然后把它还给我 现在我称之为民意调查done 方法 但我希望届时得到通知don
  • 如何获取目录中的所有文件并跳过未经授权的文件?

    我需要获取 C 盘中允许的所有文件的列表writing and reading 所以我尝试这样 string files Directory GetFiles C SearchOption AllDirectories foreach st
  • 如何加快 R 中的文本搜索速度?

    我有一个很大的文本向量 我想搜索特定的字符或短语 正则表达式需要很长时间 怎样才能快速搜索到呢 样本数据 R lt 10 7 garbage lt replicate R paste0 sample c letters 1 5 10 rep
  • JSON 响应字符串中的取消转义字符

    我发出了一个 JSON 请求 它给了我一个使用的字符串Unicode 字符代码看起来像 s u003Cp u003E 我想将其转换为 s p 在 Python 中执行此操作的最佳方法是什么 请注意 这是同一个问题this one 仅适用于除
  • html 表 colspan 未按预期工作

    HTML 概念有时是如此糟糕 这是我在 html 表中使用 colspan 的代码 看起来并不像我预期的那样 table border 1 tr td a td tr tr td b td td c td tr table 我想要的是 ce
  • VBA 宏运行时错误 6:循环内编码溢出

    遇到此错误的问题 我正在创建一个 GA 循环是将我的适应度值分配给一个数组 一些变量 Dim Chromolength as integer Chromolength varchromolength aVariables Dim i as
  • OpenGL帧缓冲区:可以清除它,但不能绘制它

    在 Mac 上 我有一个 OpenGL 设置 除了帧缓冲区外 它工作得很好 纹理工作等 所以我知道纹理已启用 我有一个有效的上下文 等等 所有工作都完美无缺 直到我尝试创建一个帧缓冲区 我使用 glGenFramebuffers glBin
  • GWT 2.0 的硒测试

    如何使 selenium click 的工作方式与手动鼠标单击相同 我最近将 GWT 从 1 7 1 升级到 2 0 一些 selenium 测试 SeleniumRC v1 0 1 IE7 现在失败 看来 Selenium click 方
  • 泛型方法可以使用逆变/协变类型吗?

    我正在编写一个通用方法 以在 T4 模板的特殊任务中使用它 该方法应该允许我使用通用接口中的专用类型 我考虑了以下签名 interface IGreatInterface Object aMethodAlpha u U parameter
  • WPF 用户控件父级

    我有一个用户控件 我将其加载到MainWindow在运行时 我无法从包含窗口获取句柄UserControl 我努力了this Parent 但它始终为空 有谁知道如何从 WPF 中的用户控件获取包含窗口的句柄 以下是控件的加载方式 priv