【发布时间】:2018-04-12 14:35:30
【问题描述】:
我正在使用自定义的DataGrid,并且希望在我右键单击可以改变列可见性的列标题时能够拥有ContextMenu。我为我的DataGridColumnHeader 定义了一个Style,其中包含一个模板,我试图在其中定义一个ContextMenu,它将DataGrid 的列作为ItemsSource:
<ContextMenu ItemsSource="{Binding Columns, RelativeSource={RelativeSource AncestorType={x:Type customControls:CustomDataGrid}}}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}"/>
</DataTemplate>
</ContextMenu.ItemTemplate>
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="IsChecked" Value="{Binding Visibility, Converter={StaticResource BooleanToVisibilityConverter}, Mode = TwoWay}"/>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
但是,当我右键单击列标题以查看 ContextMenu 时,没有任何反应(它没有按预期打开),当我在 VS 中查看 Live Property Explorer 时,我可以看到 ItemsSource 属性ContextMenu 是空的,所以它显然没有找到 DataGrid 的 Columns 属性。
请注意,在 VS 的 Live Visual Tree 中,我可以看到为位于层次结构中我的自定义 DataGrid 下的控件定义的 DataGridColumnHeader 样式。
有什么想法吗?干杯。
【问题讨论】: