在MVVM中的Textblock或Textbox中获取文本

时间:2014-02-28 06:00:34

标签: c# wpf xaml 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"});
            }

现在我想要实现的是获取Textblock或文本框的文本并将它们添加到列表中。我想这样做:

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

我怎么会得到那个文字?有什么东西可以添加吗?

1 个答案:

答案 0 :(得分: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 Property ..

并在你的AddItem方法中,

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