MVVM中的事件绑定

mrJ*_*ack 2 wpf binding c#-4.0

我在ViewModel中的代码:

public void Insert_Click(object sender, RoutedEventArgs e)
{
    System.Windows.MessageBox.Show("Insert_Click");
}
Run Code Online (Sandbox Code Playgroud)

视图中的代码:

<Button Click="{Binding Insert_Click}"  Background="Black" Height="56" Name="btnAdd" Width="57">
</Button>
Run Code Online (Sandbox Code Playgroud)

错误:

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

请告诉我正确的代码

aqw*_*ert 5

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

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

<Button Command="{Binding Insert}" Background="Black" Height="56" Name="btnAdd" Width="57"/>
Run Code Online (Sandbox Code Playgroud)

并查看模型

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

public ICommand Insert { get; private set; }


private void Insert_Click()
{
    System.Windows.MessageBox.Show("Insert_Click");
}
Run Code Online (Sandbox Code Playgroud)

这是使用诸如MVVM light之类的框架