[英]How to prevent adding a new item into the C# Windows Form Listview?
[英]Adding new item to ListView
我有一个ListView和一个按钮 AddNewItem,并且两种形式都包裹在两个堆栈面板中:当我从列表中选择一个项目时, spanel1和spanel2 ,当我单击按钮时,spanel1显示所选项目的数据,spanel2的形式为空
在视图模型中,我有两个属性:selectedItem和newItem问题:如果我以spanel2的形式填充新项目的数据并单击Save(请参阅Save命令代码),NewItem属性将不会更改
private void SaveItem(object obj)
{
if (this.selectedItem != null)
{
this.item.EditAsync(this.selectedItem );
}
else
{
this.ietm.InsertAsync(this.NewItem);
}
this.LoadData();
}
private Item newItem;
public Item NewItem
{
get
{
return this.newItem ?? new Item();
}
set
{
this.newItem = value;
this.RaisePropertyChanged("NewItem");
}
}
private Item selectedItem;
public Item SelectedItem
{
get
{
return this.selectedItem;
}
set
{
this.selectedItem= value;
this.RaisePropertyChanged("SelectedItem");
}
}
我究竟做错了什么? 谢谢。
1)在XAML中创建一个新按钮
2)在UserVM类中创建一个新命令(称为UpdateOrAddNew命令),并使用“ Command”属性将其与按钮关联。
请参阅此以获取更多信息:如何将WPF按钮绑定到ViewModelBase中的命令?
3)在UpdateOrAddNew命令处理程序中,检查SelectedUser是否为null(然后创建新用户),或者如果不为null,则更新现有的用户。
要解决TextBox问题,您需要创建一个包装器,以始终保存信息。
将此添加到您的UserVM:
public User UserRecord
{
get
{
if(userRecord == null)
return userRecord = new User();
}
set
{
userRecord = value;
onPropertyChanged("UserRecord");
}
}
现在,您需要修改TextBoxes以绑定到UserRecord,而不是SelectedUser。
并修改您的SelectedUser:
public User SelectedUser
{
get { return selecteduser; }
set
{
selecteduser = value;
onPropertyChanged("SelectedUser");
UserRecord = selecteduser;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.