Casting App.Current从辅助窗口返回null
本文关键字:窗口 返回 null App Current Casting | 更新日期: 2023-09-27 17:58:59
我有两个WPF应用程序(比如App1和App2),它们分别运行良好。我决定能够从App1实例化并打开App2的主窗口,这样我就可以使用App1作为两个应用程序的启动屏幕。我在VisualStudio的App1项目中添加了对App2的引用,并在Using语句中添加了它的命名空间。除一件事外,大多数情况下这都很好。
这两个应用程序都包含一个名为Storeid的公共变量,该变量在App.xaml.cs中声明
Application TheApp = App.Current;
App MyApp = TheApp as App;
_storeid = MyApp.Storeid;
此代码是从App2的主窗口的构造函数调用的。
当App2独立运行时,此代码运行良好。然而,当从App1实例化相同的窗口时,它会失败。第一行运行良好,但当它到达第二行时,强制转换返回Null,因此第三行由于Null引用异常而失败。
现在,我意识到App.Current在这两种情况下会有所不同。当它独立运行时,我希望它使用App2中的App.Current(和App的定义),当从App1实例化时,它使用App1中的App.Current和App。这两个App.xaml.cs都有Storeid公共变量,所以我希望代码能正常工作。我只是不明白为什么当我在第二行将TheApp转换为App时,转换会产生一个null值。
可能是因为尽管它们有相同的名称,但App2中的Type App与App1中的Type App不同。由于正在运行的应用程序是App2,您正试图将App1的应用程序类型的实例强制转换为App2的应用程序类别。结果为null。
也就是说,App2正在尝试将App.Current强制转换为App2的应用程序类型。但属性的类型是App1的应用程序类型。我希望这是清楚的。
你必须在App2发布的代码副本中确定哪个应用程序类型是应用程序的类型。Current&如果是App1的应用程序类型,则使用不同的逻辑来取消引用商店ID。