我创建了一个任务列表控件。我有一个AddTask方法。我想从主机窗口调用此方法。
我在SO和其他网站上发现了一些建议使用界面的帖子,然后循环遍历窗口中的所有控件以找到控件,然后获取对它的引用并使用它来调用方法。这是一个例子: Call method on various user controls
但是可以通过绑定以某种方式调用方法吗?假设某人使用MVVM并且Window的VM想要触发控件的AddTask方法。这有可能吗?
谢谢!
答案 0 :(得分:0)
如果你真的想(以可能的话)这样做,我会告诉你写一些关于 MVVM 的正确方法。
绑定和方法在MVVM中使用命令
非常有效这是我的解决方案
MyCommandBehaviour
的嵌套类ICommand
(有些人在不同的类中创建该类)MyCommandBehaviour MyCommand
{Binding MyCommand}
DataContext
设置为视图模型注意:我通常创建一个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
}
}