2013-03-11 132 views
4

我在我的项目中有一个xaml文件,位于Ns1\Ns2\myfile.xaml。它的构建操作被设置为Page,具有MSBuild的自定义工具:编译。我试图加载此文件在静态构造函数:Application.LoadComponent找不到资源

namespace Ns1.Ns2 { 
    internal class MyClass { 
     static() { 
      var obj = Application.LoadComponent(new Uri("/myfile.xaml", UriKind.Relative)); 
     } 
    } 
} 

然而,当我尝试运行这段代码时,出现异常cannot locate resource 'myfile.xaml'。如果我将URI更改为绝对URI:

var obj = Application.LoadComponent(new Uri("pack://application:,,,/ns1/ns2/myfile.xaml", UriKind.Absolute)); 

它与Cannot use absolute URI一起失败。如果将myfile.xaml的类型更改为Resource,我会得到相同的错误。

如何从代码编译和引用myfile.xaml?

回答

10

您应指定程序集名称:

Application.LoadComponent(new Uri("/AssemblyName;component/myfile.xaml", UriKind.Relative)) 

或者,如果文件中有一个代码隐藏类,你可以“新”它,生成的代码将加载相关的XAML。

+0

在这种情况下会是'/ WpfApplication1; ns1/ns2/myfile.xaml'?这是行不通的。 – thecoop 2013-03-11 11:18:41

+0

@thecoop我认为你忘了指定组件。 – ethicallogics 2013-03-11 11:21:21

+0

啊,那不是路径的一部分?得到它了。 – thecoop 2013-03-11 11:23:11