我在另一个控制模板中使用MVVM光中继命令控制模板中触发事件时出现问题。
以下是这种情况: main_control以generic.xaml样式进行模板化。 sub_control以同样的方式模板化。
main_control在ObservableCollection
中有几个sub_control实例现在在我用MVVM Light实现的SL项目中,我在xaml中有一个带有main_control的视图。 此视图绑定到视图模型,并使用sub_control填充它。
我想要实现的是在viewmodel中返回单击的sub_control实例。
感谢您的帮助。
答案 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>