2012-03-23 158 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的青睐。