MVVM中的事件绑定

时间:2011-10-01 16:19:23

标签: wpf c#-4.0 binding

我在ViewModel中的代码:

public void Insert_Click(object sender, RoutedEventArgs e)
{
    System.Windows.MessageBox.Show("Insert_Click");
}
视图中的

代码:

<Button Click="{Binding Insert_Click}"  Background="Black" Height="56" Name="btnAdd" Width="57">
</Button>

错误:

  

错误1单击=“{Binding Insert_Click}”无效。 '{捆绑   Insert_Click}'不是有效的事件处理程序方法名称。只有实例   生成的或代码隐藏类的方法是有效的

请告诉我正确的代码

1 个答案:

答案 0 :(得分:5)

如果从事件处理程序中删除Binding语法,则事件挂接仅适用于控件/窗口后面的代码。对于MVVM,它有点不同。如果你将处理程序移动到后面的代码但是我怀疑你想要使用MVVM,你可以使它工作。

这里你真正需要的是使用命令模式

<Button Command="{Binding Insert}" Background="Black" Height="56" Name="btnAdd" Width="57"/>

并查看模型

public ViewModel()
{
     Insert = new RelayCommand(Insert_Click);
}

public ICommand Insert { get; private set; }


private void Insert_Click()
{
    System.Windows.MessageBox.Show("Insert_Click");
}

这是使用MVVM light

等框架