之前有做過WindowsPhone 7的開發,現在開始入手Win8的開發,在對Win8有了一些了解之后,果斷的打算將之前做好的一個小應用移植到Win8,整個過程還是很順利的,但是在從一個頁面向另一個頁面傳送一個路徑字符串,然后通過對Image控件綁定該字符路徑時遇到了這樣的問題,即“給定的 System.Uri 無法轉換為 Windows.Foundation.Uri”。如下圖示:

我的源碼是這樣的:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.Parameter != null)
{
Car car = (Car)e.Parameter;
txtcontent.Text = car.CarContent;
txtname.Text = car.CarCountry + ":" + car.CarName;
img.Source = new BitmapImage(new Uri(car.CarImg, UriKind.RelativeOrAbsolute));
}
}
報錯的原因是:
我們只要對高亮部分換成如下的代碼即可:
img.Source = new Windows.UI.Xaml.Media.Imaging.BitmapImage(
new Uri("ms-appx://" + car.CarImg, UriKind.RelativeOrAbsolute));//備注:如果你的路徑里沒帶斜線如:images/1.jpg,則需要寫成:“ms-appx:///",
如果路徑里有斜線如:/images/1.jpg"則直接寫為:"ms-appx://"+"/iamges/1.jpg";
兩行代碼的差別之處在於,下面的代碼多了“ms-appx://”這句代碼的意思文件的絕對路徑,同時你會發現我們的UriKind已經換成了RelativeOrAbsolute,。這也就說明這樣的問題,如果我們需要在cs頁對Image控件的Source進行賦值時,需要賦給其絕對路徑,而在xaml頁,只需賦給其相對路徑即可完整顯示圖片。
只是剛開始接觸Win8,還有很多東西要學,只是把自己遇到的問題,總結下,和大家分享自己解決辦法,希望能對大家有所幫助。如有說的不對的地方,還請大家多多指教!
