我正在使用M-V-VM并在我的ViewModel上有一个名为'EntitySelectedCommand'的命令。
我试图获取ItemsControl中的所有Items来触发此命令,但是它无效。
我认为这是因为每个项目的“datacontext”是项目绑定的单个对象,而不是ViewModel?
有人能指出我正确的方向吗?
干杯,
安迪
<ItemsControl ItemsSource="{Binding Path=LinkedSuppliers}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Controls:EntityLabel Grid.Column="0" Grid.Row="0" Content="{Binding Name}" CurrentEntity="{Binding }" EntitySelected="{Binding EntitySelectedCommand}" ></Controls:EntityLabel>
<StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
答案 0 :(得分:13)
你的怀疑是正确的。你有几个选择:
EntitySelectedCommand
(即,每个Supplier
也会拥有此属性。)RelativeSource
与我们联系,并使用父DataContext
的{{1}}。答案 1 :(得分:2)
看一下MVVM Toolkit ......它有一个你可以使用的命令参考的想法!
创建一个CommandRefrece作为资源,然后只使用StaticResource标记扩展...
<c:CommandRefrence x:Key="EntitySelectedCommandRef" Command="{Binding EntitySelectedCommand}" />
然后你可以使用
...Command="{StaticResource EntitySelectedCommandRef}" ...