2012-06-05 36 views
2

我們使用的是Caliburn Micro,它非常好,但現在我們使用新的Ribbon控件(它隨.NET 4.5一起提供)。這個控件有RibbonButton,雖然這個按鈕有一個點擊事件,並且它是一個按鈕,但是當它的名字與viewmodel方法相匹配時,似乎Caliburn不會自動觸發該動作。現在簡化非標準按鈕的綁定

,我們可以通過cal:Message.Attach="ViewHelp"解決這個問題,但在功能導航欄我在想,如果有一個簡單的方法,使自動捆綁的RibbonButtonViewModel方法之間工作內給予的控制相當大的量。

+0

有趣的,因爲默認的「點擊」約定是註冊爲'ButtonBase'與以下語句'AddElementConvention (ButtonBase.ContentProperty,「DataContext」,「Click」);'如[本文](http:///devlicio.us/blogs/rob_eisenberg/archive/2010/12/16/caliburn-micro-soup-to-nuts-part-7-all-about-conventions.aspx)。並基於MSDN'RibbonButton'繼承自'ButtonBase',所以我期望它的工作... – nemesv

+0

@nemesv當然,這正是奇怪的。 –

回答

2

您可以使用ConventionManager。從此開始:

ConventionManager.AddElementConvention<RibbonButton>(
    RibbonButton.ContentProperty, "DataContext", "Click"); 

將此代碼放入Bootstrapper中。像這樣:

public class AppBootstrapper : Bootstrapper 
{ 
    protected override void Configure() 
    { 
     ConventionManager.AddElementConvention<RibbonButton>(
      RibbonButton.ContentProperty, "DataContext", "Click"); 
    } 
} 

這不是在任何意思,你應該在你的引導程序中做的任何事情。只是爲了展示正確的地方。

+0

我已經更新了我的答案。 –

+0

對不起,我無法測試它。我仍然沒有安裝.NET 4.5。 –