1

我在另一个控制模板中的控制模板中触发事件并使用 MVVM 光继电器命令时遇到问题。

情况如下: main_control 以 generic.xaml 样式模板化。sub_control 的模板化方式相同。

main_control 在 ObservableCollection 中有几个 sub_control 实例

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

我想要实现的是在视图模型中返回单击的 sub_control 实例。

谢谢你的帮助。

4

1 回答 1

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>
于 2011-10-27T16:04:26.227 回答