2011-01-05 91 views
-1

嗨 我是Silverlight和MVVM邏輯的新手,我收集了許多文章,博客等等,但他們解釋的很多事情都是關於如何處理數據庫操作。比方說,我有一個圖像控制和按鈕,它應該上傳一個文件,並在適當的控制下顯示選定的圖片。 我不知道如何用MVVM模式來做到這一點。我不希望你描述如何用silverlight上傳文件,實際上問題是我不知道如何訪問ViewModel類中的圖像控件來設置它的源屬性。MVVM模式和Silverlight命令

任何意見將不勝感激 最好的問候。

+0

如果您是MVVM的新手,請查看MVVM Light Toolkit(與您的實際問題無關) – 2011-01-05 14:28:55

回答

2

您不會訪問視圖模型中的控件,而是顯示屬性。

該視圖依次綁定到視圖模型公開的屬性。在MVVM中,視圖的DataContext被設置爲視圖模型。

查看:

<Window … namespaces, etc. /> 
    <Grid> 
     <TextBox Text={Binding InputText, Mode=TwoWay} 
    </Grid> 
</Window> 

視圖模型:

public class MyViewModel : INotifyPropertyChanged 
{ 
    string _text = "Enter text here"; 
    public string Text 
    { 
     get { return _text; } 
     set 
     { 
      _text = value; 
      // raise property change notification 
     } 
    } 

    // implement INPC so the view will know when the view-model has changed 
} 

現在,如果你視圖窗口DataContext屬性設置爲MyViewModel的情況下,文本框將包含文本「在此處輸入文本」,因爲其Text財產是約束InputText財產。如果在文本框中鍵入其他內容,則視圖模型的InputText屬性將更新爲該值。

+0

謝謝Jay,但您能否更詳細地解釋這一點? – saber 2011-01-05 06:20:22

+0

@ S.Amani我添加了一些示例代碼。 – Jay 2011-01-05 06:29:18

+0

這就是傑伊,非常感謝你。 – saber 2011-01-05 07:23:46