2017-02-01 81 views
0

我正在開發我的第一個應用程序使用MVVM,我堅持我的命令按鈕。WPF按鈕命令在視圖中不觸發ICommand在viewmodel

在我看來,我有:

<Button x:Name="btSave" Command="{Binding AddContactCommand}" Content="Save" HorizontalAlignment="Left" Margin="183,186,0,0" VerticalAlignment="Top" Width="75"/> 

在後面的代碼我有:

public partial class ContactView : Window 
{ 
    private ContactViewModel contactVM; 

    public ContactView() 
    { 
     InitializeComponent(); 

     contactVM = new ContactViewModel(); 
     this.DataContext = contactVM; 
    } 
} 

在視圖模型我有:

public ICommand AddContactCommand { get; private set; } 

void AddContact() 
{ 
    ContactData ContactData = new ContactData(); 
    bSaved = ContactData.SaveContact("Theresa","Theresa","Theresa","Theresa");  
} 

AddContact()視圖模特從未被解僱。

我做錯了什麼?

+3

AddContact()方法與AddContactCommand有什麼關係?你在哪裏實例化屬性('AddContactCommand = new Something()')?有關'ICommand'的示例,請參見[本答案](http://stackoverflow.com/a/1468830/1997232)。 – Sinatr

+1

僅僅因爲你*名字*方法'AddContact'和命令'AddContactCommand'並不意味着它們以任何方式相關,就你的程序而言至少是。在代碼中你缺少這樣的東西:'AddContactCommand = new ClassThatImplementsICommand(AddContact)'如果你沒有一個ICommand實現,谷歌的'RelayCommand',這是一個簡單的實現,涵蓋了基礎知識。 –

+0

謝謝你指點我正確的方向。我現在使用RelayCommand解決了它的問題。 –

回答

0

檢查您的DataContext,因爲我認爲這是問題。

如果您的視圖模型是在構造函數後面的代碼把下面:

DataContext = this; 

否則,如果您需要做同樣的事情,但這樣做的另一個類:

DataContext = new MyViewModel(); 

至少我認爲這是你發佈的內容的問題。