我有一个将ItemsSource
设置为Collection<ItemViewModel>
的ListBox。
ListBox定义了 DataTemplate ,以很好的方式显示ViewModel实例。
在DataTemplate中,我有一个Button,它绑定到 MainViewModel命令,不在ItemViewModel
类中定义的命令。
<Button Command="{Binding ElementName=mainViewModel,
Path=ProcessClickForThisItem}">
所需的行为是按钮调用mainViewModel的命令并告诉其后面的方法,按钮点击来自哪个ItemViewModel
实例。
我猜这里可以使用CommandParameter
属性。但是,如何引用父视图模型实例?
答案 0 :(得分:1)
按钮父级将为ListBoxItem
,而DataContext
将是您感兴趣的ItemViewModel
的实例。
您需要RealtiveSource
才能获得ListBoxItem。这是您使用CommandParameter
的方式:
<Button Command="{Binding ElementName=mainViewModel,
Path=ProcessClickForThisItem}"
CommandParameter="{Binding DataContext,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=ListBoxItem}}">