使用中继命令控制模板事件

时间:2011-10-27 14:30:15

标签: silverlight silverlight-4.0 controls mvvm-light relaycommand

我在另一个控制模板中使用MVVM光中继命令控制模板中触发事件时出现问题。

以下是这种情况: main_control以generic.xaml样式进行模板化。 sub_control以同样的方式模板化。

main_control在ObservableCollection

中有几个sub_control实例

现在在我用MVVM Light实现的SL项目中,我在xaml中有一个带有main_control的视图。 此视图绑定到视图模型,并使用sub_control填充它。

我想要实现的是在viewmodel中返回单击的sub_control实例。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

确保以下事项正确无误:

将RelayCommand公开为对象的属性,该对象表示sub_control的DataContext。这可能是您的ViewModel,更常见的是它是绑定到集合的实体类的实例。确保将其公开并提供get和set方法。

  public RelayCommand MyCommand { get; set; }

确保将命令设置为新实例

  MyCommand = new RelayCommand(() =>
  {
     // Do something
  });

最后在视图中设置绑定

  xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
  xmlns:command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.SL4"
  ...
  <Button Content="Click Me">
    <i:Interaction.Triggers>
      <i:EventTrigger EventName="Click">
        <command:EventToCommand Command="{Binding MyCommand}"/>
      </i:EventTrigger>
    </i:Interaction.Triggers>
  </Button>