簡體   English   中英

使用按鈕更改ViewModel屬性

[英]Change ViewModel property using button

我正在學習WPF和MVVM,到目前為止,我很喜歡使用它。 我要追求沒有任何代碼隱藏的純粹風格。

我的軟件很簡單:我有一堆代表聯系人的POCO對象。 該視圖在左側具有所有聯系人的列表框。 通過在列表框中選擇一個聯系人,您會在右側看到詳細信息,例如姓名。 這非常完美,列表框綁定到具有聯系人列表的視圖模型,並且視圖模型還具有一個名為CurrentContact的屬性,該屬性綁定到詳細信息視圖中的字段。 (Listbox的SelectedItem綁定到CurrentContect屬性,因此當您在列表中選擇聯系人時,它會自動更改)。

問題是:我想要一種添加新聯系人的好方法,最好將“ CurrentContact”設置為null,這會導致詳細信息中的空字段,然后我可以填寫並按Save。 我的第一選擇是在列表框的底部添加一個“新”項,但是由於列表框綁定到在列表中沒有此類空對象的viewmodel上,因此很難做到。 相反,我在列表的底部添加了一個按鈕,該按鈕將CurrentContact設置為null。 我需要此按鈕來更改我的視圖模型上的屬性,但在這里我無法想到使用綁定的方法。 我在我的視圖模型中實現了一個Command,將屬性設置為null。 這行得通,但似乎是解決問題的荒謬方式,對於如此簡單的事情來說,這是大量的樣板代碼。 這真的是唯一干凈的方法嗎?

不幸的是,您做得很好。 樣板代碼應該在那里。

您想使用ICommand將填充的對象添加到列表中。

public void InitializeCommands(){
    AddEContactCommand = new ICommandImpl(AddElement); //you'll have to derive an implementation for ICommand for this
}

public ICommand AddContactCommand
{
    get { return _addContactCommand; }
    set { SetValue(ref _addContactCommand, value); } //setvalue is wrapper for notifychanged from viewmodelbase abstract class
}
public void AddContact() {
     //do add contact
     //set properties null
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM