2012-03-23 64 views
0

我有一個WPF應用程序正在構建。該解決方案包含一個名爲CustomControls的WPF控件庫項目。 CustomControls項目文件夾下有一個名爲Layouts的文件夾。該文件夾中有一個名爲OnscreenLayout.xml的XML文件。該文件的Build Action屬性設置爲Embedded Resource。無法獲取包Uri的工作

我想將該文件加載到代碼後面的流中,並將流傳遞給第三方庫類的方法。有問題的代碼如下所示:

OnscreenKeyboard.DefaultLayout = FPS.VirtualKeyboard.KeyboardLayout.Create( 
    App.GetResourceStream( 
     new Uri(@"/CustomControls;component/Layouts/OnscreenLayout.xml", 
      UriKind.Relative)).Stream); 

運行此代碼時,它拋出IOException與消息

Cannot locate resource 'layouts/onscreenlayout.xml'. 

我一直在使用這個字符串開放的我們甚至嘗試:

@"pack://application:,,,/CustomControls;component/Layouts/OnscreenLayout.xml" 

但沒有喜悅。我究竟做錯了什麼?

編輯:我甚至嘗試將文件的構建操作從「嵌入式資源」更改爲「資源」,但它仍然無效。

感謝

託尼

+0

您是否嘗試過使用反射器或類似的東西來檢查裝配中的資源,以及它們是如何命名的?一般來說,包裝網址和「資源」構建行動,然後它的工作。 – 2012-03-23 16:05:53

+0

@MartinMoser:是的,我已經完成了。 Uri對我來說很合適。我很茫然。 – 2012-03-23 17:42:19

+0

這不只是'.xaml'而不是'.xml'? – Phil 2012-03-23 17:48:08

回答

0

只有內容資源建設的行動是有效的在WPF應用程序中使用的資源文件。

請避免其他構建操作,如嵌入式資源 - 這將適用於合適的API,但不受WPF的青睞。