2012-06-05 4 views
2

Мы используем Caliburn Micro, и это довольно хорошо, но теперь мы используем новый элемент управления Ribbon (который поставляется с .NET 4.5). Этот элемент управления имеет RibbonButton, и хотя эта кнопка имеет событие щелчка, и это, ну, кнопка, кажется, что Caliburn не срабатывает автоматически, когда это имя соответствует методу viewmodel one.Упрощение привязки для нестандартной кнопки

Теперь мы можем исправить это с помощью cal:Message.Attach="ViewHelp", но учитывая довольно большое количество элементов управления в панели ленты было интересно, если есть простой способ сделать автоматическое связывание работать между RibbonButton и методом ViewModel.

+0

Интересно, потому что соглашение по умолчанию «click» зарегистрировано для '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. –

Смежные вопросы