我有两个单独运行良好的 WPF 应用程序(比如 App1 和 App2)。我决定我希望能够从 App1 实例化并打开 App2 的主窗口,这样我就可以将 App1 用作两个应用程序的开始屏幕。我通过在 Visual Studio 的 App1 项目中添加对 App2 的引用并在 Using 语句中添加其命名空间来做到这一点。在大多数情况下,这工作正常,除了一件事。
这两个应用程序都包含一个名为 Storeid 的公共变量,该变量在 App.xaml.cs 中声明。我用来访问它的代码如下:
Application TheApp = App.Current;
App MyApp = TheApp as App;
_storeid = MyApp.Storeid;
这段代码是从 App2 的主窗口的构造函数中调用的。
当 App2 独立运行时,此代码可以正常工作。但是,当从 App1 实例化同一个窗口时,它会失败。第一行工作正常,但是当它到达第二行时,强制转换返回 Null,因此第三行由于空引用异常而失败。
现在,我意识到 App.Current 在这两种情况下会有所不同。我希望它在独立运行时使用 App2 中的 App.Current(以及 App 的定义),并在从 App1 实例化时使用 App1 中的 App.Current 和 App。这两个 App.xaml.cs 都有 Storeid 公共变量,所以我希望代码可以正常工作。我只是不明白为什么当我在第二行将 TheApp 转换为 App 时,转换会产生一个空值。