【问题标题】:Binding button to function绑定按钮功能
【发布时间】:2018-04-18 15:07:59
【问题描述】:

如何将按钮绑定到“MVVM 样式”中。

我刚刚开始将我的应用程序转换为 mvvm 样式。

我的代码:

XAMLPage1.xaml 类中:

 <Button x:Name="my_button" Content="Add"  Command="{Binding msgbox}"  Margin="451,82,39,0" Width="50" Height="31"/>

ViewModelPage1.cs 类:

public class ViewModelPage6
    {
        public void msgbox()
        {
            MessageBox.Show("mvvm is great");
        }     
    }

谁能给个更简单的答案然后here

谢谢,

蓬松。

【问题讨论】:

  • 链接答案中的“硬”是什么?
  • 通常所有的逻辑都不在代码后面
  • 使用 MVVM,您仍然需要创建许多包含转换器、数据模板选择器、行为等代码的类。只需创建可重用的 ICommand 类一次,然后在任何地方使用它。我喜欢DelegateCommand。 “无代码隐藏”(纯 mvvm)意味着避免视图中的代码。 ICommand 实现是视图模型的东西。
  • 正如 Sinatr 所说,您需要使用ICommand。不过,请确保您还声明了 Page1.xaml 的数据上下文。如果它不知道它应该从ViewModelPage1.cs 获取数据,那么它永远不会绑定。

标签: c# wpf mvvm


【解决方案1】:

这是一个绑定按钮的简单示例:
https://social.technet.microsoft.com/wiki/contents/articles/32164.wpf-mvvm-step-by-step-2.aspx

在大多数情况下,直接使用 icommand 有点麻烦,因此您需要研究一个可以让这更容易的框架。该示例使用 mvvmlight,其他框架可用,但这是一个很好的框架。尤其是初学者。

【讨论】:

  • 谢谢,我不能投票,因为我没有 15 个代表 :(
【解决方案2】:

您不能将method 直接绑定到ButtonCommand 属性。您必须使用ICommand 的实现。

这应该让你开始..

public ICommand msgboxCommand = new DelegateCommand(msgbox);

private void msgbox()
{
...
}

查看更多详情:https://www.wpftutorial.net/DelegateCommand.html

另外,直接在 ViewModel 中使用像 Messagebox 这样的 UI 组件;不完全是 MVVMish

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多