2010-03-10 46 views
2

下面顯示的圖像正確的Silverlight用戶控件:如何在XAML中動態綁定圖像?

Image image = pagingManager.BaseApp.DatasourceManager.GetImage("helloWorld1"); 
ContentArea.Content = image; 
... 
<ContentControl x:Name="ContentArea"/> 

然而,我想動態圖像結合XAML,例如像這樣:

#region ViewModelProperty: MainImage 
private Image _mainImage; 
public Image MainImage 
{ 
    get 
    { 
     return _mainImage; 
    } 

    set 
    { 
     _mainImage = value; 
     OnPropertyChanged("MainImage"); 
    } 
} 
#endregion 
... 
MainImage = pagingManager.BaseApp.DatasourceManager.GetImage("helloWorld1"); 

而且我XAML是這樣的,但結果是,它顯示什麼

<Image Source="{Binding MainImage}"/> 

什麼我需要把我的XAML,使其顯示圖像對象我有我的ViewModelProperty?

回答

5

Image.Source屬性是ImageSource型的,所以您的視圖模型應該公開的ImageSourceImage是一個控件,它在ViewModel中沒有任何關係。

如果暴露在您的視圖模型的Image控制(這絕對是一個壞主意),那麼你應該在ContentControl顯示它,而不是Image控制:

<ContentControl Content="{Binding MainImage}" /> 
+0

但是,這是一個Silverlight應用程序和DataManager已經加載了應用程序需要使用的所有圖像,所以我只想將Image對象從DataManager集合中取出並掛接到XAML,我不想傳遞數據源,然後XAML不斷加載它,我只是想讓它顯示恰好包含在MainImage變量中的Image對象,是否沒有辦法做到這一點,或者我需要在我的代碼隱藏方法中使用Refresh()方法,並且每次圖像更改時都手動將Image對象重新附加到ContentControl中? – 2010-03-10 09:35:32

+0

我不確定我是否理解你的問題...你是否看到我答案的最後部分(也許你在我編輯它之前發佈了你的評論)?綁定ContentControl的內容應該可行。如果沒有,請嘗試:' 2010-03-10 09:45:45

+0

對不起,我們的評論雜交,是的,這完美的工作,正是我所期待的 – 2010-03-10 10:02:01