lac*_*ohn 50 c# wpf ioexception
我有一个WPF应用程序.
应用程序在MainWindow.xaml中运行时打开的页面,在App.xaml文件的StartupUri属性中设置.这个页面打开正常.
但是,如果我尝试使用Show或ShowDialog方法来打开任何其他窗口我在InitializeComponent方法获得一个IOException说"无法找到资源'Window1.xaml’"(或任何文件被调用).我创建的每个窗口都会发生这种情况.我在网上搜索但是所有的解决方案似乎都说"确保App.xaml的StartupUri属性是正确的"而且我的是,因此MainWindow打开了.
知道发生了什么事吗?
Moo*_*ght 67
上述内容对我不起作用,但工作内容如下.打开App.xaml
<Application x:Class="dotDiff2013.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)
然后,您需要将启动URI更改为完全限定的URI.在我的情况下,我将我移动MainWindow.xaml
到一个名为"Main"的文件夹,因此将上面的URI更改为
StartupUri="Main/MainWindow.xaml"
Run Code Online (Sandbox Code Playgroud)
解决了我的问题.
如果打开Window1.xaml文件(即Window1.xaml.cs)的代码隐藏,则可以右键单击InitializeComponent方法调用并选择"Goto Definition".会有如下代码:
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/TestApp;component/mainwindow.xaml", System.UriKind.Relative);
#line 1 "..\..\..\MainWindow.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
Run Code Online (Sandbox Code Playgroud)
如果上面代码中的Uri不正确,那么您将收到该错误.
此外,如果XAML文件的Build Action未设置为"Page",那么您也会遇到此问题.要检查此项,您可以在解决方案资源管理器中选择该文件,然后按F4.
最后,如果某些内容将XAML文件重命名为构建过程的一部分(例如混淆),那么您将再次收到该错误.
除此之外,我会尝试"Clean Solution"和"Rebuild Solution"来确保重建具有InitializeComponent定义的文件.
我遇到过同样的问题.我的原因是因为我在不调整App.xaml的情况下移动了MainWindow.xaml.如果您将MainWindow.xaml移动到名为"UI"的文件夹中,则必须在App.xaml中调整以下行
StartupUri="UI/Mainwindow.xaml"
Run Code Online (Sandbox Code Playgroud)