2011-11-03 103 views
1

我有一種感覺,這是一個簡單的問題,但我很難找出答案。我使用Silverlight,MVVM和Caliburn Micro開發我的項目。在一個部分中,我有一個應該顯示員工照片的員工查詢。用戶將輸入一個ID號碼,系統應該查找用戶並在文件服務器上找到員工的圖像。該圖像以員工ID號碼命名(例如,1234.jpg爲員工1234)。使用Caliburn Micro和Silverlight從文件服務器加載圖像

我不會在設計時將這些圖片作爲資源加載,因爲有數百個,用戶可能只需要一個圖像。我的問題是如何設置我的模型,以正確綁定到圖像控件?我知道使用基本的Caliburn Micro(我還是比較新的,所以我沒有覆蓋所有不常見的區域),所以我基本上只會從每個區域的片段中獲益(視圖,模型視圖和模型)將涉及圖像控件。理想的情況是將圖像的文件路徑分配給一個變量,並將其作爲圖像顯示在我的視圖中。然後,如果文件路徑爲空,則圖像消失。

這裏是我試過的代碼:

視圖模型 - 這是爲了簡化。我會將其中的一部分推向模型,但重點突出。

public ImageSource Photo 
{ 
    get 
    { 
     return new BitmapImage(new Uri(UserPhoto, UriKind.Absolute)); 
    } 
} 

public string UserPhoto 
{ 
    get 
    { 
     return this._userPhoto; 
    } 
    set 
    { 
     this._userPhoto = value; 
     NotifyOfPropertyChange(() => UserPhoto); 
     NotifyOfPropertyChange(() => Photo); 
    } 
} 

查看

<Image x:Name="Photo" /> 

的UserPhoto屬性是保存URL到圖像的字符串屬性。我嘗試了網址以及UNC路徑。圖像被驗證在該位置,但是當我在Photo屬性上激發INCP時,圖像不顯示。

更新

它更玩了之後,似乎如果你使用的文件路徑(文件://yourserver/yourpath/yourfile.jpg)這種解決方案會奏效。我一直試圖通過http(http://yourserver.domain/yourpath/yourfile.jpg)訪問文件的公共端。 http方法不起作用,但文件方法不起作用。我仍然想使用http方法,但我至少有一個解決方法。任何想法,爲什麼文件會工作,但http不會?

回答

0

嘗試引發該屬性的屬性更改方法。何時舉起它取決於你,我會在UserPhoto setter中做到這一點。

+0

我正在這樣做。我更新了我的帖子以包含UserPhoto屬性,所以您可以看到我是如何做到的。我查了一下,該財產被解僱,但沒有圖像顯示在我的網頁上。 – IAmTimCorey

0

由於BitmapImage將被異步加載,因此您可以嘗試連線BitmapImage的DownloadCompleted事件並再次觸發NPC。這應該有所作爲。

+0

感謝您的意見。我試過,但沒有得到任何地方。但是,我確實發現它可以與文件路徑一起工作(而不是http--請參閱上面的更新)。有什麼想法嗎? – IAmTimCorey

相關問題