【发布时间】:2015-05-19 09:27:54
【问题描述】:
我仍在研究 mvvm,我想通过拆分模型视图模型和视图来使我的应用程序以正确的方式运行。过去我总是使用 mytextbox.Text 直接获取视图中文本框的值。
我在视图模型中创建了一个命令来向网络添加一个新人。但我无法将文本框的值放入视图模型中的命令中。
这是我到目前为止的代码 在模型中
public class Person : INotifyPropertyChanged
{
public Person()
{ }
public Person(String FirstName)
{
this._firstName = FirstName;
}
public event PropertyChangedEventHandler PropertyChanged;
private string _firstName;
public string FirstName // the Name property
{
get { return this._firstName; }
set { this._firstName = value; NotifyPropertyChanged("FirstName"); }
}
}
在我的视图模型中
public class NetworkViewModel: INotifyPropertyChanged
{
private ObservableCollection<Person> _networkList1 = new ObservableCollection<Person>();
public ObservableCollection<Person> NetworkList1 //Binds with the listbox
{
get { return _networkList1; }
set { _networkList1 = value; RaisePropertyChanged("NetworkList1"); }
}
public NetworkViewModel()
{
AddPersonCommand = new RelayCommand(AddPerson);
}
private ICommand _addPersonCommand;
public ICommand AddPersonCommand // Binding with view
{
get { return _addPersonCommand; }
set { _addPersonCommand = value; }
}
public void AddPerson(object obj)
{
if(cb_group.Text.ToUpper() == "PRIMARY")
{
_networkList1.Add(new Person(){ FirstName = tb_firstName.Text,});
}
}
在 XAML 中
<TextBox x:Name="tb_firstName" Text="{Binding Path=FirstName}"/>
<Button x:Name="btn_add" Command="{Binding AddPersonCommand }"/>
我想要的是让 tb_firstname 和 cb_group 的值在 viewmodel 中使用,这样我就可以使命令工作。 感谢你的帮助。我只是边走边学。
【问题讨论】:
-
添加更多上下文。
tb_firstName绑定的对象(Person?)在哪里?cb_group是什么以及在哪里?答案可能是将控件所需的值绑定到此 ViewModel 中的属性,然后在执行AddPerson时将这些值包含在范围内。