今天博主在开发一款windows phone应用时,希望实现app背景的更换,思路很简单。使用ApplicationDataContainer容器存储我的图片路径,每次载入应用时读取这个路径以决定我用什么背景,然后在更换背景时改变这个容器的值就好了。相关代码如下:

       ApplicationDataContainer localsetting = ApplicationData.Current.LocalSettings;

            localsetting.Values["Background"] = "ms-appx:///Assets/Images/background2.jpg";

       Button btn = sender as Button;
if(string.Equals(btn.Tag,""))
{
localsetting.Values["Background"] = "ms-appx:///Assets/Images/background1.jpg";
}
else if(string.Equals(btn.Tag,""))
{
localsetting.Values["Background"] = "ms-appx:///Assets/Images/background2.jpg";
}
else
{
localsetting.Values["Background"] = "ms-appx:///Assets/Images/background3.jpg";
}

在载入应用时,把Grid的背景用容器路径所对应的图片刷一下,其中的ContentPanel是一个Grid:

       if (!localsetting.Values["Background"].Equals(null))
{
string strImageUri = localsetting.Values["Background"].ToString();
if (!string.IsNullOrEmpty(strImageUri))
{
ImageBrush imageBrush = new ImageBrush();
imageBrush.ImageSource = new BitmapImage(new Uri(strImageUri, UriKind.RelativeOrAbsolute));
ContentPanel.Background = imageBrush;
}
}

值得注意的是:我的图片放在工程中下面的Assets文件夹下面的Image文件夹中,一开始我容器中存放的值是类似这样的:

 localsetting.Values["Background"] = "Assets/Images/background2.jpg";

然后就会报错:The given System.Uri cannot be converted into a Windows.Foundation.Uri,现在的Uri定义好像已经修改,具体参考:https://msdn.microsoft.com/zh-cn/library/windows/apps/windows.foundation.uri(v=vs.85).aspx

我的解决方法就是在路径前面加个ms-appx:///就行了,注意,这是个绝对路径,UriKind应该设置为UriKind.RelativeOrAbsolute或者UriKind.Absolute

UAP开发错误之The given System.Uri cannot be converted into a Windows.Foundation.Uri(windows phone背景更换)的更多相关文章

  1. 开发错误处理记录(无法激活服务,因为它不支持 ASP.NET 兼容性)

    错误提示:无法激活服务,因为它不支持 ASP.NET 兼容性.已为此应用程序启用了 ASP.NET 兼容性.请在 web.config 中关闭 ASP.NET 兼容性模式或将 AspNetCompat ...

  2. 开发错误日记 12: Unsupported major.minor version 52.0

    开发错误日记 12: Unsupported major.minor version 52.0 在编译时出现如下错误: java.lang.UnsupportedClassVersionError: ...

  3. 开发错误11:Configuration with name ‘default’ not found

    开发错误11:Configuration with name 'default' not found 今天在导入一个sdkdemoapp3.0项目时,发现project build.gradle 与m ...

  4. 开发错误记录8:Unable to instantiate application com

    开发错误记录8:Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication 这是因为在And ...

  5. 错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败

    错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, Pu ...

  6. 编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。

    编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义.必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neu ...

  7. 10个最容易犯的Python开发错误

    10个最容易犯的Python开发错误 转载 2017年09月25日 16:54:36 标签: python / 大数据 / 大讲台   Python是一门简单易学的编程语言,语法简洁而清晰,并且拥有丰 ...

  8. C#微信公众号开发——错误一

    一.网站发布后,运行报如下错误

  9. windows phone URI映射

    UriMapping用于在一个较短的URI和你项目中的xaml页的完整路径定义一个映射(别名).通过使用别名URI,开发者可以在不改变导航代码的情况下来改变一个项目的内部结构.该机制还提供了一个简单的 ...

随机推荐

  1. Procedural graphics architectures and techniques

    BACKGROUND The evolution of graphics rendering technology has led to the development of procedural t ...

  2. Thermal zone monitoring in an electronic device

    FIELD One embodiment of the invention relates to a closed loop thermal control process in a portable ...

  3. Opencv 使用Stitcher类图像拼接生成全景图像

    Opencv中自带的Stitcher类可以实现全景图像,效果不错.下边的例子是Opencv Samples中的stitching.cpp的简化,源文件可以在这个路径里找到: \opencv\sourc ...

  4. eclipse配置本地服务

    1.下载安装eclipse 2.下载tomcat文件,并解压 3.下载tomcat插件 com.sysdeo.eclipse.tomcat_3.3.0 将com.sysdeo.eclipse.tomc ...

  5. UIPasteboard粘贴板:UITableView复制粘贴功能(二)

    这篇咱写写一写在UITableView上实用剪贴板的两种方法: 一:在自定义cell里面使用 其实,在cell的使用跟在label里面的用法基本一样 1.放方法: - (BOOL)canBecomeF ...

  6. 关于生命周期里执行setState

    React里生命周期的哪些方法里可以执行setState,这对于很多使用React很长时间的开发都是个迷惑的问题. 先看一下完整的生命周期. 再看两篇文章 React componentDidUpda ...

  7. Android经常使用UI包裹 - EditText

    EditText的信息接受用户输入是最重要的Android UI包裹,您可以使用EditText.getText()获取它的文本内容. 实例:EditTextDemo 执行效果: watermark/ ...

  8. Variability aware wear leveling

    Techniques are presented that include determining, for data to be written to a nonvolatile memory, a ...

  9. c语言学习笔记(10)——结构体

    ------------------------------------------------------------------ # include <stdio.h> struct ...

  10. 1.4微服务前奏 netcore学习

    1.要让vs2017能够选择.net core 2.1版本,只需要安装.net core2.1的sdk安装包就行了 官方地址:https://www.microsoft.com/net/learn/g ...