WPF DataGridComboBoxColumn不显示上下文菜单
本文关键字:上下文 菜单 显示 DataGridComboBoxColumn WPF | 更新日期: 2023-09-27 18:13:03
我试图使一个DataGridComboBoxColumn有一个静态列表可供选择:未开始,正在进行中,完成
这是我在XAML中的内容,虽然它构建得很好,但我无法在下拉菜单中看到选项:
<DataGridComboBoxColumn Header="Status" Width="auto" IsReadOnly="False" >
<DataGridColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="LightGoldenrodYellow" />
<Setter Property="BorderThickness" Value="2,2,0,2" />
</Style>
</DataGridColumn.HeaderStyle>
<ContextMenuService.ContextMenu>
<ContextMenu>
<MenuItem Header="Not Started" />
<MenuItem Header="In Progress" />
<MenuItem Header="Completed" />
</ContextMenu>
</ContextMenuService.ContextMenu>
</DataGridComboBoxColumn>
我不明白为什么这不能像其他DataGrid那样工作。快捷菜单的工作。我觉得我错过了一些很简单的东西。
你可以使用CompositeCollection:
<DataGridComboBoxColumn Header="Status" Width="auto" IsReadOnly="False" SelectedItemBinding="{Binding Path=Value}">
<DataGridColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="LightGoldenrodYellow" />
<Setter Property="BorderThickness" Value="2,2,0,2" />
</Style>
</DataGridColumn.HeaderStyle>
<DataGridComboBoxColumn.ItemsSource>
<CompositeCollection>
<sys:String>Not Started</sys:String>
<sys:String>In Progress</sys:String>
<sys:String>Completed</sys:String>
</CompositeCollection>
</DataGridComboBoxColumn.ItemsSource>
</DataGridComboBoxColumn>
添加命名空间:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
ContextMenuService
提供了显示上下文菜单的系统实现
你想要的离你已经拥有的并不远。它经过测试,对我有效:
<DataGridComboBoxColumn Header="Status" Width="auto" IsReadOnly="False" >
<DataGridColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="LightGoldenrodYellow" />
<Setter Property="BorderThickness" Value="2,2,0,2" />
</Style>
</DataGridColumn.HeaderStyle>
<DataGridComboBoxColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Not Started" />
<MenuItem Header="In Progress" />
<MenuItem Header="Completed" />
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</DataGridComboBoxColumn.CellStyle>
</DataGridComboBoxColumn>
当前设置为单元格点击工作,但可以很容易地设置为Header或两者。