UAP開發錯誤之The given System.Uri cannot be converted into a Windows.Foundation.Uri(windows phone背景更換)

今天博主在開發一款windows phone應用時,但願實現app背景的更換,思路很簡單。使用ApplicationDataContainer容器存儲個人圖片路徑,每次載入應用時讀取這個路徑以決定我用什麼背景,而後在更換背景時改變這個容器的值就行了。相關代碼以下:windows

       ApplicationDataContainer localsetting = ApplicationData.Current.LocalSettings;

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

在載入應用時,把Grid的背景用容器路徑所對應的圖片刷一下,其中的ContentPanel是一個Grid:app

       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文件夾中,一開始我容器中存放的值是相似這樣的:spa

 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).aspxcode

個人解決方法就是在路徑前面加個ms-appx:///就好了,注意,這是個絕對路徑,UriKind應該設置爲UriKind.RelativeOrAbsolute或者UriKind.Absoluteblog

相關文章
相關標籤/搜索