如何获取 WPF 窗口的静态引用?

2023-11-22

我尝试了很多方法来在程序中获取窗口的静态引用。我需要在运行时从不同的类访问其所有成员,因此需要静态引用。

我想要的是类似的东西Program.Window1, where Core是静态的并且MyWindow是其静态成员之一。

在 WinForms 中,我通常在 Program.cs 中声明静态表单,但这似乎不适用于 WPF 及其自定义“App.xaml”ApplicationDefinition。

我该怎么做?

注意:我已经尝试了多种方法:使用直接调用新窗口(即Program.Window1 = new Window1())将不起作用,因为我收到一些线程无效异常。据我所知,到目前为止,只有 ApplicationDefinitions 可以在 WPF 中启动窗口。

每当我尝试“通过代码”而不是通过默认的 XAML ApplicationDefinition 的 StartupUri 创建窗口时,都会出现以下异常:

调用线程必须是 STA,因为许多 UI 组件都需要它。


创建一个可以包含窗口对象的静态类,然后在创建窗口时将其自身传递给静态类,从此静态类可以将窗口对象分发给感兴趣的各方,即使窗口对象本身是不是静态的。像这样的东西。您的表单不需要是静态的,您只需要一个静态的地方来保存表单对象。

public class Core
{
     internal static MyWindowClass m_Wnd = null;

     // call this when your non-static form is created
     //
     public static void SetWnd(MyWindowClass wnd)
     {
         m_Wnd = wnd;
     }

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

如何获取 WPF 窗口的静态引用? 的相关文章

  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • WPF - 关闭 App.g.cs 中 Main 的自动生成

    我正在学习WPF 我想在 App xaml cs 中提供我自己的 Main 方法 而不是在 App g cs 中为我生成一个方法 然而 我不断遇到冲突 因为我还没有找到如何阻止生成额外的 Main 我的项目文件或其他地方是否有控制此设置的设
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData

随机推荐

  • Spring-Test-MVC / MockServletContext - 测试中内容为空,但在 Tomcat 上工作

    我们正在尝试为我们的 Spring MVC Web 应用程序设置 Spring Test MVC 我们开始使用 freemarker 一切都很好 但我们决定不这样做 现在正在尝试使用 JSP 来设置它 当测试应用程序部署在 Tomcat 上
  • IE8 上多帧 JS 的完整调用堆栈

    当 Internet Explorer 8 上的 JavaScript 发生异常时 我需要获取完整的调用堆栈 函数调用可能发生在数量较大的帧之间 将日志发送给开发人员所需的调用堆栈 我无法使用调试器 因为最终用户不必处理这个问题 当前的 J
  • 如何使用DataContext.ExecuteCommand并获取执行的存储过程返回值?

    在c 项目中 我调用存储过程如下 System Data Linq DataContext dataContext MembershipContext GetContext connectionString int returnValue
  • C++ 删除字符串对象

    我的 C 程序中有一个字符串对象 声明如下 string str 我已经将一些数据复制到其中并做了一些操作 现在我想从内存中删除str对象 我无法使用删除运算符 因为 str 不是指针 如何从内存中删除该对象以回收分配给它的内存 谢谢 拉凯
  • 如何在 PHP 中解析和处理 HTML/XML?

    如何解析 HTML XML 并从中提取信息 Answer recommended by PHP Collective 原生 XML 扩展 我更喜欢使用其中之一原生 XML 扩展因为它们与 PHP 捆绑在一起 通常比所有第 3 方库更快 并为
  • python 从字符串创建切片对象

    我想从字符串创建一个切片对象 现在唯一的方法似乎是通过繁琐的 eval 语句 class getslice def getitem self idx return idx 0 eval getslice s 1 1 提前致谢 Edit 抱歉
  • 如何将 LatLng 实例发送到新意图

    我需要将 LatLng 类的实例传递给另一个意图 我该怎么做呢 这是代码 LatLng fromPosition new LatLng 23 4555453556 11 145315551 LatLng toPosition new Lat
  • Git Stash 和 Worktree 问题

    我很难让 Git 与我现有的用户定义工作树合作outside包含我的 git 目录的文件夹 基本上设置是这样的 我有两个目录 一个名为 git worktree 其中包含我想要跟踪的文件 另一个名为 git dir 其中包含存储库的 git
  • Android 中的假电话

    HI all 我想在android中开发一个假电话应用程序 单击按钮后 我必须在给定时间段内收到假电话 有什么办法可以做到这一点吗 有任何线索或示例代码 请让我知道 提前致谢 安卓是开源的 用它 In the git 存储库上的手机应用程序
  • Flutter - 在没有 Firebase 身份验证的情况下将 Firebase 通知推送给特定用户

    我正在使用 Firebase 来推送通知 并且我不在我的应用程序上使用 Firebase 身份验证 我有自己的系统 我没有找到这个问题的答案 是否可以在没有 Firebase 身份验证 因此没有 UID 的情况下使用 Firebase 将通
  • 每个 DocumentStore 的 WaitForNonStaleResults

    有没有办法告诉RavenDb对某些DocumentStore或DocumentSession的所有查询使用WaitForNonStaleResults模式 您可以使用DefaultQueryingConsistency Consistenc
  • 如何使用python和Opencv读取视频文件

    我正在使用 python 2 7 和 opencv2 4 读取 avi 文件 我使用的是 windows 10 我的示例代码是 import numpy as np import cv2 cap cv2 VideoCapture video
  • 将 ObjectMapper 声明为 bean 有什么好处?

    假设我只想要一个简单的实例ObjectMapper目的 将其声明为 bean 有什么好处吗 Bean public ObjectMapper objectMapper return new ObjectMapper 为什么不直接制作一个新的
  • 扫描仪与 BufferedReader

    据我所知 在Java中从文件中读取基于字符的数据的两种最常见的方法是使用Scanner or BufferedReader 我也知道BufferedReader通过使用缓冲区来有效地读取文件 以避免物理磁盘操作 我的问题是 Does Sca
  • 阻止 OS X 使用 Python 进入睡眠状态?

    有没有办法防止运行 OS X 的计算机在 Python 脚本中进入睡眠状态 您可以使用内置的咖啡因酸盐命令 subprocess Popen caffeinate 这就是我的使用方式 import sys import subprocess
  • 如何提高 IIS / ASP.Net 的启动性能

    我正在使用一个特别慢的虚拟网络主机 名称保留 其中磁盘性能可能非常糟糕 因此 第一次访问我的 ASP Net 网站可能需要 1 分钟以上的时间才能加载 初始加载后 一切都在 RAM 中 一切正常 我想知道是否有人知道如何指示 IIS 预加载
  • Epplus SetPosition图片问题

    我在用Epplus库在 Asp Net C 中生成 Excel 2010 及更高版本兼容的文件 我使用的是目前最新的版本 3 1 2 在添加任何图片之前 我首先设置行高 ExcelPackage pck new ExcelPackage v
  • IdHttp 只需获取响应代码

    我正在使用 idhttp Indy 进行一些网站检查 我想要它做的就是在发送请求后检查服务器的响应代码 我不想实际上必须从服务器接收 HTML 输出 因为我只监视 200 OK 代码 任何其他代码意味着存在某种形式的问题 我查阅了 idht
  • iPad 方向更改问题

    我的 iPhone 应用程序在 iPad 上运行时显示一些关于支持方向更改的奇怪行为 该应用程序以视图控制器 为了论证起见 将其称为视图 A 和导航控制器启动 并且 shouldAutorotateToInterfaceOrientatio
  • 如何获取 WPF 窗口的静态引用?

    我尝试了很多方法来在程序中获取窗口的静态引用 我需要在运行时从不同的类访问其所有成员 因此需要静态引用 我想要的是类似的东西Program Window1 where Core是静态的并且MyWindow是其静态成员之一 在 WinForm