【问题标题】:Caliburn.Micro - is it possible bind event to System.Action or any other delegate?Caliburn.Micro - 是否可以将事件绑定到 System.Action 或任何其他委托?
【发布时间】:2014-02-06 04:33:58
【问题描述】:

如上的问题,简短的例子:

视图模型

public System.Action SomeAction;

private void Function1() {}
private void Function2() {}

//in code somewhere
SomeAction = new System.Action(Function1);
//in code elsewhere
SomeAction = new System.Action(Function2);

查看

xmlns:cm="..."
<Button ...
    cm:Message.Attach=[Event Click] = [Action SomeAction()] />

Caliburn.Micro 可以实现类似的功能吗?我认为它适用于某些情况,但是像上面这样的代码会抛出异常(MethodNotFound),这并不奇怪。

或者基于我缺乏知识,这可能是一种不好的方法,应该以其他方式完成类似的事情?

【问题讨论】:

    标签: c# wpf mvvm delegates caliburn.micro


    【解决方案1】:

    只需创建一个名为SomeAction() 的公共方法就可以了。根据我的经验,我并没有真正使用过旧的delegates 来调用function。你想在这里达到什么具体目的以及你想使用老派delegate的原因?

    您打算什么时候将委托设置为方法?基于选定的项目?商业逻辑?如果您真的需要在不同的情况下执行不同的操作,那么我认为应该是design decision,如果您可以告诉我您的情况,那么我可以提供更多详细信息。

    【讨论】:

    • 这怎么行?关键是我想使用不同的功能(基于我的选择)对同一事件做出反应,所以不,那是行不通的。 “老派代表”是什么意思?什么是新学校代表?我知道我可以采取另一种方法来解决这个问题并以完全不同的方式设计它,我只是问这样的事情是否可能,或者应该如何处理(如果这种方法是错误的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多