Wpf MVVM中的事件绑定
ViewModel中的我的代码:Wpf MVVM中的事件绑定,wpf,c#-4.0,binding,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"> </B
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 Click=“{Binding Insert\u Click}”无效{绑定
Insert_Click}不是有效的事件处理程序方法名称。唯一实例
生成的或代码隐藏类上的方法有效
请向我显示正确的代码如果从事件处理程序中删除
绑定
语法,则事件连接仅适用于控件/窗口的代码隐藏。对于MVVM来说,这有点不同。如果将处理程序移到代码后面,就可以实现这一点,但我怀疑您希望使用MVVM
这里您真正需要的是使用命令模式
<Button Command="{Binding Insert}" Background="Black" Height="56" Name="btnAdd" Width="57"/>
这是在使用一个框架,例如我的答案并不是真正针对MVVM,而是您的错误消息。阿克沃特的答案是一个更好的长期解决方案,但需要一点关于指挥的阅读。(编辑:我删除了我的答案)。+1。这篇经典文章很好地解释了指挥。您不需要框架(MVVM Light)来实现这一点,因为本文中的RelayCommand本身就可以工作。(并不是说你不应该使用MVVMLight!)只是提到MVVMLight是一个框架,所以RelayCommand并没有成为一个谜。当然,您可以自己开发,在早期我就是这么做的,但是现在框架都开发得很好。谢谢你的链接
public ViewModel()
{
Insert = new RelayCommand(Insert_Click);
}
public ICommand Insert { get; private set; }
private void Insert_Click()
{
System.Windows.MessageBox.Show("Insert_Click");
}