Exi*_*ist 5 data-binding wpf datagrid contextmenu
我有一段时间试图在DataGrid上动态绑定ContextMenu.DataGrid绑定到一个很好的对象列表:
<DataGrid ItemsSource="{Binding DataGridItems}">
Run Code Online (Sandbox Code Playgroud)
对于每个DataGridItem对象,我有一个在属性上公开的MenuItem列表,我想用它来绑定到ContextMenu.我尝试了以下但我认为我遗漏了一些东西:
<DataGrid ItemsSource="{Binding DataGridItems}">
<DataGrid.ContextMenu>
<ContextMenu ItemsSource="{Binding ContextMenuItems}" >
<MenuItem Header="{Binding Name}" Command="{Binding OnClick}"></MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid>
Run Code Online (Sandbox Code Playgroud)
public class DataGridItem
{
public ObservableCollection<ContextMenuItem> ContextMenuItems
{
get { return _contextMenuItems; }
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助或指导将不胜感激.
这就是我最终解决它的方法:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4938 次 |
| 最近记录: |