Wpf 上下文菜单中的XAML和绑定子菜单项?
我在Datagrid上定义了ContextMenu,但希望将子菜单项绑定到viewmodel上的集合。有人能建议怎么做吗 下面是我试图实现的一个简单示例,但我希望Test1、Test2来自viewmodel上的集合,而不是硬编码的集合。我知道如何将我的收藏绑定到整个ContextMenu,但不知道如何将其绑定到一个子菜单Wpf 上下文菜单中的XAML和绑定子菜单项?,wpf,xaml,wpf-controls,Wpf,Xaml,Wpf Controls,我在Datagrid上定义了ContextMenu,但希望将子菜单项绑定到viewmodel上的集合。有人能建议怎么做吗 下面是我试图实现的一个简单示例,但我希望Test1、Test2来自viewmodel上的集合,而不是硬编码的集合。我知道如何将我的收藏绑定到整个ContextMenu,但不知道如何将其绑定到一个子菜单 <ContextMenu> <MenuItem Header="Add to"> <MenuItem Header="Te
<ContextMenu>
<MenuItem Header="Add to">
<MenuItem Header="Test1" />
<MenuItem Header="Test2" />
</MenuItem>
<MenuItem Header="Remove from All" />
</ContextMenu>
我正在使用3.5 SP1和WPF工具包。我想我应该做更多的实验。事实证明,这是相对简单的:
<my:DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Add to" ItemsSource="{Binding MyItems}">
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem CommandTarget="{Binding}" Click="AddClick">
<MenuItem.Header>
<TextBlock>
<TextBlock.Text><Binding StringFormat="Add to {0}" /></TextBlock.Text>
</TextBlock>
</MenuItem.Header>
</MenuItem>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
<MenuItem Header="Remove from All" />
</ContextMenu>
</my:DataGrid.ContextMenu>
我想我应该多做些实验。事实证明,这是相对简单的:
<my:DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Add to" ItemsSource="{Binding MyItems}">
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem CommandTarget="{Binding}" Click="AddClick">
<MenuItem.Header>
<TextBlock>
<TextBlock.Text><Binding StringFormat="Add to {0}" /></TextBlock.Text>
</TextBlock>
</MenuItem.Header>
</MenuItem>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
<MenuItem Header="Remove from All" />
</ContextMenu>
</my:DataGrid.ContextMenu>
使用MenuItem.ItemTemplate时出现错误。鼠标悬停在子菜单上时的颜色会让用户误解,他们可以单击来选择菜单,但即使它高亮显示,也不能适用于所有区域。看到图片了吗 然后我使用了这个代码,它对我来说很好
<ContextMenu>
<MenuItem Header="Add to" ItemsSource="{Binding MyItems}"
DisplayMemberPath="{Binding ItemName}">
<MenuItem.ItemContainerStyle>
<Style>
<EventSetter Event="MenuItem.Click" Handler="Menu_Click"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
<MenuItem Header="Remove from All" />
</ContextMenu>
使用MenuItem.ItemTemplate时出现错误。鼠标悬停在子菜单上时的颜色会让用户误解,他们可以单击来选择菜单,但即使它高亮显示,也不能适用于所有区域。看到图片了吗 然后我使用了这个代码,它对我来说很好
<ContextMenu>
<MenuItem Header="Add to" ItemsSource="{Binding MyItems}"
DisplayMemberPath="{Binding ItemName}">
<MenuItem.ItemContainerStyle>
<Style>
<EventSetter Event="MenuItem.Click" Handler="Menu_Click"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
<MenuItem Header="Remove from All" />
</ContextMenu>