2016-10-14 196 views
0

我有一個的ListView按鈕AddNewItem兩種形式都裹着兩米疊板:spanel1spanel2 當我從列表中選擇一個項目,spanel1顯示所選項目 的數據當我點擊按鈕時,spanel2的形式爲空添加新項目的ListView

在視圖模型中我有兩個屬性:selectedItem和newItem 問題: 如果我填的是新項目的數據在spanel2的形式,然後點擊保存(見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"); 

       } 
      } 

我究竟做錯了什麼? 謝謝。

+0

@Jonh通過添加新的項目時,selectedItem屬性始終是空 – Hicham4

回答

1

1)創建XAML

2一個新的按鈕)創建UserVM類的新命令(稱之爲UpdateOrAddNew命令),然後用「命令」屬性的按鈕關聯。

請參閱此瞭解更多信息:如何將WPF按鈕綁定到ViewModelBase中的命令?

3)在UpdateOrAddNew命令處理程序中,檢查SelectedUser是否爲空(然後創建新用戶),或者如果它不爲空,則更新現有的用戶。

要採取TextBox問題的汽車,您需要創建一個包含總是信息的包裝。

添加到您的UserVM:

public User UserRecord 
{ 
    get 
    { 
     if(userRecord == null) 
     return userRecord = new User(); 
    } 
    set 
    { 
     userRecord = value; 
     onPropertyChanged("UserRecord"); 
    } 
} 

現在你需要修改你的文本框綁定反對UserRecord,而不是SelectedUser。

和修改SelectedUser:

public User SelectedUser 
{ 
    get { return selecteduser; } 
    set 
    { 
     selecteduser = value; 
     onPropertyChanged("SelectedUser"); 

     UserRecord = selecteduser; 
    } 
} 
+0

爲什麼你需要** ** 2點的屬性?爲什麼不只是一個? –

+0

@邁克伊森。如果你有問題的解決方案,請解釋它。 – Hicham4