2012-06-05 38 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。 –