2014-02-28 47 views
0
一個文本塊或文本框中的文本

目前我正使用MVVM將項目添加到列表中的煩惱,我已經成功能夠使用這種簡單的方法在列表中添加項目:獲取在MVVM

private DelegateCommand _addItemCommand; 
      public ICommand AddItemCommand 
      { 
       get 
       { 
        if (_addItemCommand == null) 
        { 
         _addItemCommand = new DelegateCommand(AddItem); 
        } 
        return _addItemCommand; 
       } 
      } 

    void AddItem() 
      { 

      DessertData.Add(new CakeDataSample {Samplename="Black Forest" ,ImagePath="Assets/Black-Forest.jpg"}); 
      } 

現在我試圖實現的是獲取文本塊或文本框的文本並將它們添加到列表中。我想這樣做:

DessertData.Add(new CakeDataSample {Samplename=txtCakename.text ,ImagePath=myImageSource}); //or something likethat 

我該如何獲得該文本?有什麼即將增加?

+2

在您的虛擬機中有一個'string'屬性,並將它綁定到兩個TextBuffer或TextBox ..使用該屬性,同時添加.. – Sankarann

+0

如何?即時通訊如果問愚蠢的問題對不起,如果仍然在學習mvvm的基礎知識,請給我一個樣本? –

回答

1

按照下面的代碼,

private string text; 
public string Text 
{ 
    get 
    { 
      return text; 
    } 
    set 
    { 
      text = value; 
      OnPropertyChanged("Text"); 
    } 
} 

使用此在你的虛擬機......我相信你已經實現了INotifyPropertyChanged

<TextBox x:Name="txtCakename" Text="{Binding Text, Mode=TwoWay}"/> 

這將文本綁定到txtCakename到Text屬性..

和你AddItem方法,

DessertData.Add(new CakeDataSample {Samplename=this.Text,ImagePath=myImageSource}); 
+0

謝謝!它幫助我很多!和一個小問題,它也適用於我實現'ViewModel'而不是'INotifyPropertyChanged'? –

+0

嗯這個代碼是正確的,但即時通訊設置初始文本的麻煩。每當頁面被導航時(如WinForms中的表單加載),我在文本塊中設置不同的文本,然後在獲取該文本之前必須有一個初始文本並將它們添加到列表中,但是然後我看到空白文本塊。我該如何解決這個問題? –