WPF IOException 无法找到资源。

60

我有一个WPF应用程序。

当应用程序在App.xaml文件的StartupUri属性设置打开时,打开的页面是在MainWindow.xaml中。这个页面可以正常打开。

然而,如果我尝试使用ShowShowDialog方法打开其他窗口,我会在InitializeComponent方法中收到IOException错误,错误信息为"Cannot locate resource 'Window1.xaml'"(或者其他文件名)。每次创建窗口都会发生这种情况。我已经在网上搜索了解决方案,但所有的解决方案似乎都说“确保App.xaml的StartupUri属性正确”,而我的确实正确的,这就是为什么MainWindow能够打开。

你知道发生了什么吗?


你是在哪里编写打开代码?在Startupuri中提供了Window1吗? - Kishore Kumar
打开Window1的代码位于MainWindow中一个按钮的click事件处理程序中。由于我在项目的开始阶段,我决定删除该项目并重新开始。将代码复制并粘贴到新项目中,现在它可以工作了!编译器可能对某些东西感到困惑了。我说它可以工作,实际上ShowDialog方法现在正在打开窗口并立即关闭它,返回false! - lace.john
忘记我的第二个问题。是我自己犯傻了!我忘记了我将可见性属性设置为隐藏。现在一切都正常了。如果有人知道我原来的问题是什么,那就很有趣了。 - lace.john
http://pmichaels.net/2015/01/07/startup-uri-not-working-cannot-locate-recource-mainwindow-xaml/ - Paul Michaels
1
在我的情况下,我忘记写正确和完整的视图名称了!我真是太傻了!它应该像 StartupUri="Views/MainWindow.xaml" 这样,而我写成了 StartupUri="Views/MainWindow" - Achilles
18个回答

1
请打开App.Xaml并更改StartUpUri,以指定应用程序启动时要运行的内容。 在此输入图像描述 更改启动Uri: 在此输入图像描述 如果Xaml文件在任何文件夹内,请按如下方式添加。

StartupUri="View/MyView.xaml"


1
请在 App.xaml 文件中检查 StartupUri 标签(如果您移动了 MainWindow)。

0

找到文件app.g.cs,用记事本编辑,在Visual Studio中它会要求你重新加载该文件,点击OK就可以了​


0

请确保您没有意外移动了文件MainWindow.xaml。我的文件不知怎么被错误地拖到了Views文件夹中 - 真是糟糕。


1
但即使将其移动后,它也应该正常工作。如果已经移动,则需要在哪里进行更改? - Debendra Dash

0
我在本地化我的应用程序之后发现了这个问题。我最终得到了一个卫星资源,但我没有在安装脚本中包括它。所以虽然在Visual Studio中它能正常工作,但单独构建安装程序就会出现这个问题。
包含卫星dll解决了这个问题。

0

同样的问题,但又是另一种解决方案:

对我来说,我的程序集名称和默认命名空间相同,但与项目名称不同。我实际上更新了默认命名空间和程序集名称以匹配新的项目名称,这就解决了问题。


0

你可能已经全局(整个项目/解决方案等)或局部地重命名了你的命名空间,但是你的解决方案 obj\Debug 文件夹中的一些内容(xaml 类,以 [original_xaml_file_name].g.i.cs 结尾)没有应用你的更改。下次如果是这种情况,请确保选择“整个解决方案(包括外部项)”。


-2

只需进入“生成”然后选择“重新生成”和“清理”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接