用绑定的用户控件上的WPF调用方法

时间:2015-03-24 17:53:12

标签: wpf mvvm

我创建了一个任务列表控件。我有一个AddTask方法。我想从主机窗口调用此方法。

我在SO和其他网站上发现了一些建议使用界面的帖子,然后循环遍历窗口中的所有控件以找到控件,然后获取对它的引用并使用它来调用方法。这是一个例子: Call method on various user controls

但是可以通过绑定以某种方式调用方法吗?假设某人使用MVVM并且Window的VM想要触发控件的AddTask方法。这有可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果你真的想(以可能的话)这样做,我会告诉你写一些关于 MVVM 的正确方法。

绑定和方法在MVVM中使用命令

非常有效

这是我的解决方案

  1. 创建ViewModel类
  2. 创建一个实现MyCommandBehaviour的嵌套类ICommand(有些人在不同的类中创建该类)
  3. 在视图模型中创建属性MyCommandBehaviour MyCommand
  4. 在视图模型的构造函数中实例化该属性
  5. 在XAML中绑定按钮{Binding MyCommand}
  6. 将窗口(或用户控件)的DataContext设置为视图模型
  7. 注意:我通常创建一个Command嵌套类,其中包含一个接受' parent'查看模型。由于该类是嵌套的,因此可以直接访问视图模型私有成员

            public class OkCommand : System.Windows.Input.ICommand
            {
                private MyViewModel _vm;
                public OkCommand(MyViewModel vm)            
                {
                    this._vm = vm;
                }
    
                public bool CanExecute(object parameter)
                {
                    return true;//I never use this and the event below
                }
    
    #pragma warning disable 0067
                public event EventHandler CanExecuteChanged;
    #pragma warning restore 0067
    
                public void Execute(object parameter)
                {
                    //do your stuff. Note you can access the MyViewModel members here via _vm
                }
            }