2010-02-18 70 views
2

我有一個文本框,其中用戶將進入的圖像的URL:設定從代碼的圖像源後面

假設用戶進入下面的字符串 - > C:\用戶\馬爾科姆\桌面\ img.png

imgSilverPart是一個圖像控件和imageUrl是一個字符串,我從文本框中獲得。

imgSilverPart.Source = new BitmapImage(new Uri(imageUrl,UriKind.RelativeOrAbsolute));

但圖像沒有被顯示。

+0

Silverlight無法直接從您的硬盤訪問文件,就像您正在嘗試的那樣。這將是一個巨大的安全風險。 Silverlight只能訪問自己的存儲空間中的文件,稱爲IsolatedStorage。 – 2010-02-18 14:49:24

回答

4

這不起作用。 Silverlight運行在安全的沙箱中,您不能只訪問桌面上的文件。 因此,您必須調用OpenFileDialog,將Stream傳送到用戶選擇的文件,並將Stream設置爲BitmapImage的源。

添加在XAML一個按鈕,做的Click事件處理程序如下:

private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     OpenFileDialog openFileDlg = new OpenFileDialog(); 
     if (openFileDlg.ShowDialog().Value) 
     { 
     using (var stream = openFileDlg.File.OpenRead()) 
     { 
      var bitmapImage = new BitmapImage(); 
      bitmapImage.SetSource(stream); 
      imgSilverPart.Source = bitmapImage; 
     } 
     } 
    } 

因爲它可能使用一些特殊的文件夾,如果你的應用在提升的信任模式下運行作爲外的瀏覽器替代應用程序。

0

也許這種Uri不是正確的。嘗試使用有效的相對或絕對URL字符串來使用UriKind.Relative或UriKind.Absolute。

+0

試過沒有成功 – Malcolm 2010-02-18 14:25:49

+0

哦。現在我意識到該文件在本地機器上,並且不通過HTTP提供。在這種情況下,雷內的回答應該引導你朝着正確的方向前進。 – PanJanek 2010-02-18 15:14:08