2014-02-28 74 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中的表单加载),我在文本块中设置不同的文本,然后在获取该文本之前必须有一个初始文本并将它们添加到列表中,但是然后我看到空白文本块。我该如何解决这个问题? –