2013-03-11 161 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