MVVM 中的事件绑定

发布于 2024-12-07 20:24:51 字数 502 浏览 0 评论 0原文

我在 ViewModel 中的代码:

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

View 中的代码:

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

错误:

错误 1 ​​Click="{Binding Insert_Click}" 无效。 '{绑定 Insert_Click}' 不是有效的事件处理程序方法名称。唯一实例 生成的或代码隐藏类上的方法是有效的

请显示正确的代码

my code in ViewModel :

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

code in View :

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

error :

Error 1 Click="{Binding Insert_Click}" is not valid. '{Binding
Insert_Click}' is not a valid event handler method name. Only instance
methods on the generated or code-behind class are valid

Please show me the correct code

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅笑依然 2024-12-14 20:24:51

如果您从事件处理程序中删除 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 之类的框架

The event hook ups will only work for code behind to the control/window if you remove the Binding syntax from the event handler. For MVVM it is a bit different. You can get that to work if you move the handler to the code behind but I suspect you want to use MVVM.

Here what you really need is to use the Command pattern

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

and view model

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

public ICommand Insert { get; private set; }


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

This is using a framework such as MVVM light

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文