繁体   English   中英

将新项目添加到ListView

[英]Adding new item to ListView

我有一个ListView和一个按钮 AddNewItem,并且两种形式都包裹在两个堆栈面板中:当我从列表中选择一个项目时, spanel1spanel2 ,当我单击按钮时,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM