我是 WPF 新手。和其他许多人一样,我试图将 a 绑定ContextMenu到 anObservableCollection以创建动态上下文菜单。Command除了将属性绑定到代表菜单项的类TheCommand的属性之外,一切正常。MenuItemViewModel该命令不会被触发。我究竟做错了什么?
从头开始,ContextMenu是 的子级Image,当鼠标悬停在 上时会显示Image。
<Image.ContextMenu >
<ContextMenu ItemsSource="{DynamicResource ContextMenu}"
Run Code Online (Sandbox Code Playgroud)
其中空的 ContextMenu 定义如下:
<Window.Resources>
<local:MenuItemViewModelCollection x:Key="ContextMenu">
</local:MenuItemViewModelCollection>
<HierarchicalDataTemplate DataType="{x:Type local:MenuItemViewModel}"
ItemsSource="{Binding Path=Children}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command"
Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}},
Path=DataContext.TheCommand}"/>
<!-- Value="{Binding Path=TheCommand}" /> I tried this too -->
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
该TheCommand属性定义如下:
<Image.ContextMenu >
<ContextMenu ItemsSource="{DynamicResource ContextMenu}"
Run Code Online (Sandbox Code Playgroud)