我是WPF的新手。像其他許多人一樣,我試圖將ContextMenu
綁定到ObservableCollection
以創建動態上下文菜單。 除了將Command
屬性綁定到代表菜單項的MenuItemViewModel
類的TheCommand
屬性之外,所有內容均可正常工作。該命令未被解僱。我究竟做錯了什麼?命令綁定在動態MVVM中不起作用上下文菜單
要從頭開始,ContextMenu
是Image
的孩子,並且在鼠標位於Image
上時顯示。
<Image.ContextMenu >
<ContextMenu ItemsSource="{DynamicResource 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>
的TheCommand
屬性定義如下:
public class MenuItemViewModel : INotifyPropertyChanged
{
//...
public ICommand TheCommand
{
//...
}
}
你的'MenuItemViewModelCollection'類是什麼樣的?菜單項是否正確顯示? – Rachel