我的WPF应用程序无法找到资源'MainWindow.xaml'。

32

我一直在使用vb.net开发WPF应用程序,但最近遇到了一个问题。

当我构建我的代码时,构建成功,但在运行代码时,System.IO.IOException抛出异常“无法找到资源ViewModel/ViewModel/Mainwindow.xaml”。 .Xaml窗口位于名为ViewModel的文件夹中,因此我不知道另一个ViewModel/ViewModel ...路径来自哪里,它不应该是viewModel/MainWindow.Xaml吗? 我尝试了所有可能的解决方案,包括清理项目,但似乎没有效果。

唯一有效的解决方案似乎是将StartupUri从StartupUri = "ViewModel\MainWindow.Xaml"更改为StartupUri = "...\MainWindow.xaml",但我怀疑这是否正确。


3
你尝试过使用 .\ViewModel\MainWindow.xaml 吗?一个问题,为什么视图文件在 VM 命名空间下?这没有意义,因为 VM 不应该知道视图的存在。 - DHN
是的,但它仍然不起作用。我没有使用MVVM模式。ViewModel只是一个像其他文件夹一样的名称,对此混淆感到抱歉。 - George
请检查您的命名空间。路径是由项目命名空间决定的,而不是由文件夹结构决定的。可能您在 ViewModel 文件夹中有一个命名空间为 MyApplication.ViewModel.ViewModel 的类。 - Rachel
为什么我使用Expression Blend运行应用程序时一切都正常,但在Visual Studio中运行时会出现问题?可能是我的Visual Studio有什么问题吗? - George
我刚刚发现我的xaml代码可能已经被修改了...我不知道是什么,但我把.xaml窗口从文件夹中移出来,重命名文件夹,然后再放回去,结果它就可以工作了!谢谢你的建议。 - George
最近我遇到了一个问题,一个用户在他的Windows系统中设置了不同的界面语言。在设置了他的界面语言之后,应用程序按预期工作了。 - mbx
5个回答

60

StartupUri="MainWindow.xaml"更改为StartupUri="FolderName/MainWindow.xaml"

当我将我的MainWindow移动到View文件夹时,解决了我的问题。


5
谢谢!如果您能具体说明此属性位于何处,那将会非常有帮助。对我来说,它位于App.xaml中。 - birgersp
是我自己的感觉还是在VB中移动某些东西时,它会自动更新项目中的所有内容,这样你就不会遇到需要微观管理的愚蠢小问题了? - J. Scott Elblein

20
在我的情况下,我需要使用打包URI语法来设置App.xaml文件的SrartUpUri属性,以指向我的MainWindow.xaml的新位置,像这样:
   <Application x:Class="TrafficLights.Controller.App"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                StartupUri="pack://application:,,,/View/MainWindow.xaml">

关于包URI的更多信息,请参考这里:

http://msdn.microsoft.com/zh-cn/library/aa970069(v=vs.110).aspx

希望能对你有所帮助。祝你好运!


11

我遇到过几次这种情况 - 每次是当我将MainWindow.xaml移动到不同的文件夹并忘记在App.xaml中更新StartupUri时。


1
Visual Studio 不知何故将我的 MainWindow.xaml 重命名为 MainWindow(1).xaml,所以我又将其重命名为 MainWindow.xaml

1

我将Mainwindow.xaml文件重命名为NameList.xaml,但没有更新App.xaml文件。一旦我更新了StartupUri="NameList.xaml",问题就解决了。


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