2014-01-17 52 views
3

問題如上,短的例子:Caliburn.Micro - 是否可以將事件綁定到System.Action或任何其他委託?

視圖模型

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),這並不令人意外。

或者,也許這是壞的方法,基於我的知識缺乏和像這樣的事情應該以其他方式完成?

回答

-1

只需創建一個名爲SomeAction()的公共方法即可完成該工作。根據我的經驗,我並沒有真正使用舊學校delegates來調用function。你想在這裏達到什麼樣的具體目的,以及你爲什麼要使用舊學校delegate

你什麼時候將代理設置爲一個方法?基於選定的項目?商業邏輯?如果你真的需要針對不同的場景採取不同的行動,那麼我認爲這將是一個design decision,如果你可以給我你的情況,那麼我可以提供更多的細節。

+1

這怎麼可能工作?關鍵是我想使用不同的功能(基於我的選擇)對同一事件做出反應,所以不會有效。 「老派代表」是什麼意思?什麼是新學校代表?我知道我可以採取另一種方法解決這個問題,並以其他方式完全設計它,我只是問是否有可能這樣的事情,或者應該如何處理(如果這種方法是錯誤的)。 – Matek

相關問題