2017-02-01 39 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(); 

至少我认为这是你发布的内容的问题。