我一直在使用 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"
但我怀疑这是否是正确的做法。
将
StartupUri="MainWindow.xaml"
更改为 StartupUri="FolderName/MainWindow.xaml"
当我将主窗口移动到查看文件夹时解决了我的问题
在我的例子中,我需要使用 pack 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/en-us/library/aa970069(v=vs.110).aspx
希望有帮助。祝你好运!
这种情况在我身上发生过几次 - 总是当我将
MainWindow.xaml
移动到不同的文件夹并忘记更新 StartupUri
中的 App.xaml
时。
Visual Studio 以某种方式将我的
MainWindow.xaml
重命名为 MainWindow(1).xaml
,所以我再次将其重命名为 MainWindow.xaml
我将
Mainwindow.xaml
文件重命名为 NameList.xaml
并且尚未更新 App.xaml
文件。一旦我这样做了StartupUri="NameList.xaml"
,就很好了。
除了此处已回答的内容之外,您还可以使用更方便的 URL 格式,当您将 App.xaml 或 MainWindow 文件移动到其他文件夹时,可以防止出现此类错误。例如:
StartupUri="/Project;component/MainView/MainView.xaml"
如果您像上面一样指定完整路径,那么无论您将 App.xaml 移动到哪里,MainView.xaml 的位置都将保持正确(在项目内)。如果您移动 MainView.xaml,那么如何更新 StartupUri 也很清楚。