Silverlight(WP7)加载资源

时间:2011-05-01 21:49:41

标签: c# visual-studio silverlight windows-phone-7 resources

我有以下代码。它找不到我的资源:

    string filename = "Resources/Functions.plist";
    Uri fileUri = new Uri(filename, UriKind.Relative);
    StreamResourceInfo sr = Application.GetResourceStream(fileUri);

但是在上面执行之后,sr为null。不好。

我在名为“Resources”的目录中有一个名为“Functions.plist”的文件,该目录是我的项目目录的子目录。当我在解决方案资源管理器中右键单击它时,我将其构建操作视为“资源”,并将其复制到输出目录为“如果更新则复制”。

以下是加载它的.csproj文件的一部分,或者至少我认为它是这样的:

<ItemGroup>
   // AppManifest and WMAppManifest here
<Resource Include="Resources\**">
   <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Resource>

可能出现什么问题?

4 个答案:

答案 0 :(得分:0)

我通常做的是在设计器中加载一个随机图像,然后从XAML代码复制自动生成的路径,并将其用作我自己的.CS代码的模板。

当然,如果它不是图像,我将路径用作其他对象的模板。

如果您选择“始终复制”选项,也可能有所帮助。

答案 1 :(得分:0)

对于资源,你的uri格式与内容略有不同,你需要的是:

string filename = "/{yourAssemblyShortName};component/resources/functions.plist";

第一部分告诉系统在哪个程序集中查找资源。如果你不知道名字,你应该可以在项目属性屏幕中找到它。

答案 2 :(得分:0)

原来我要做的就是使用以下内容来包含项目中的文件:

<ItemGroup>
  <None Include="Properties\AppManifest.xml">
    <SubType>Designer</SubType>
  </None>
  <None Include="Properties\foo.plist" />
  <None Include="Properties\WMAppManifest.xml">
    <SubType>Designer</SubType>
  </None>
  <Content Include="Resources\Functions.plist">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <Content Include="Resources\Help List.plist">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
            // and similarly for the other resource files
</ItemGroup>

我不确定,但关键可能是将“资源”更改为“内容”。

答案 3 :(得分:0)

我认为你可以获得这样的资源。

string filename = "Resources\\Functions.plist";
Uri fileUri = new Uri(filename, UriKind.Relative);
StreamResourceInfo sr = Application.GetResourceStream(fileUri);

因为WP7的文件分隔符是斜杠,而不是斜杠。

我希望这可以提供帮助。