如何解决WPF 4.0绑定DataGrid上的ContextMenu
| 我在尝试动态绑定DataGrid上的ContextMenu时遇到了麻烦。 DataGrid绑定到一个效果很好的对象列表:<DataGrid ItemsSource=\"{Binding DataGridItems}\">
对于每个DataGridItem对象,我都有一个暴露在属性上的MenuItems列表,我想使用该属性绑定到ContextMenu。
我尝试了以下方法,但我想缺少一些东西:
<DataGrid ItemsSource=\"{Binding DataGridItems}\">
<DataGrid.ContextMenu>
<ContextMenu ItemsSource=\"{Binding ContextMenuItems}\" >
<MenuItem Header=\"{Binding Name}\" Command=\"{Binding OnClick}\"></MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid>
public class DataGridItem
{
public ObservableCollection<ContextMenuItem> ContextMenuItems
{
get { return _contextMenuItems; }
}
}
任何帮助或指导将不胜感激。
解决方法
这就是我最终解决它的方式:
<StackPanel.ContextMenu>
<ContextMenu ItemsSource=\"{Binding ContextMenu}\">
<ContextMenu.ItemContainerStyle>
<Style TargetType=\"MenuItem\">
<Setter Property=\"Command\" Value=\"{Binding OnClick}\" />
<Setter Property=\"Icon\">
<Setter.Value>
<Image Source=\"{Binding ImageName}\"></Image>
</Setter.Value>
</Setter>
</Style>
</ContextMenu.ItemContainerStyle>
<ContextMenu.ItemTemplate>
<HierarchicalDataTemplate DataType=\"{x:Type ContextMenu:ContextMenuItem}\" ItemsSource=\"{Binding MenuItems}\">
<TextBlock Text=\"{Binding Name}\"></TextBlock>
</HierarchicalDataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
,我相信本教程描述了您的问题,但实际上您必须这样做:
<ContextMenu DataContext=\"{Binding PlacementTarget.DataContext,RelativeSource={RelativeSource Self}}\"
ItemsSource=\"{Binding ContextMenuItems}\" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。