Mvvm 获取ListView祖先的DataContext
我正在使用MVVM开发一个WPF应用程序,需要一些帮助 对于我的AddressViewModel视图,我有一个带有listview的usercontrol。我想从listViewItem的contextmenu中执行AddresssViewModel中的命令。因为我打开的是一个上下文菜单,所以在可视化树中找不到它(我在某处读到) 以下是视图标记:Mvvm 获取ListView祖先的DataContext,mvvm,binding,relativesource,Mvvm,Binding,Relativesource,我正在使用MVVM开发一个WPF应用程序,需要一些帮助 对于我的AddressViewModel视图,我有一个带有listview的usercontrol。我想从listViewItem的contextmenu中执行AddresssViewModel中的命令。因为我打开的是一个上下文菜单,所以在可视化树中找不到它(我在某处读到) 以下是视图标记: <UserControl> <ListView Name="lstAddress"
<UserControl>
<ListView Name="lstAddress"
ItemsSource="{Binding Path=Addresses}"
HorizontalAlignment="Stretch" MinHeight="150" MinWidth="100">
<ListView.Resources>
<ContextMenu x:Key="ItemContextMenu">
<MenuItem Header="Add Address"/>
</ContextMenu>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Address" DisplayMemberBinding="{Binding Path=Address}/>
<GridViewColumn Header="City" DisplayMemberBinding="{Binding Path=City}"/>
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</UserControl>
如果您的菜单项如下所示,它应该适合您:
<MenuItem Header="Add Address"
Command="{Binding DataContext.AddAddressCommand,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ListView}}}"/>
<MenuItem Header="Add Address"
Command="{Binding DataContext.AddAddressCommand,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ListView}}}"/>