我正在尝试将 MenuItem 的命令绑定到包含在UserControl.DataContext
。我发现了几个类似的问题,但根据他们的解决方案对我来说失败了:
<UserControl ...>
<UserControl.Resources>
<DataTemplate x:Key="TileItemStye">
<Grid Width="100" Height="100">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="Remove"
Command="{Binding DataContext.RemoveItem,
RelativeSource={RelativeSource FindAncestor,
AncestorType=UserControl}}">
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ListView ItemsSource="{Binding Path=Files}"
ItemTemplate="{DynamicResource TileItemStye}" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
UserControl 的 DataContext 是 ViewModelICommand
删除项目和ObservableCollection<FileViewModel>
Files.
如果您使用 .NET 4,确实有一个更优雅的解决方案:
<UserControl Name="uc" ...>
<!-- ... -->
<MenuItem Header="Remove"
Command="{Binding DataContext.RemoveItem,
Source={x:Reference uc}}"/>
(这就要求模板停留在Resources中,否则会出现循环依赖错误)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)