2

我有一个带有 OxyPlot 视图的 WPF 窗口。我正在尝试根据情节的动态生成、可检查的上下文菜单添加每个系列的隐藏/显示功能。这个想法是有一个ObservableCollection<T>对象,绑定到ItemsSource上下文菜单,其中 T 是一个类,它基本上包含作为字符串的系列标题和作为布尔值的默认检查状态。

View.xaml 的摘录:

<oxy:PlotView
    x:Name="oxyPlot"
    Model="{Binding PlansPlotModel}"
    Controller="{Binding PlansPlotController}">

    <oxy:PlotView.ContextMenu>
        <ContextMenu ItemsSource="{Binding PlansPlotContextMenuItems}">
            <ContextMenu.ItemTemplate>
                <DataTemplate>
                    <MenuItem Header="{Binding Title}"
                              IsCheckable="True"
                              IsChecked="{Binding IsCheckedByDefault}" />
                </DataTemplate> 
            </ContextMenu.ItemTemplate>
        </ContextMenu>
    </oxy:PlotView.ContextMenu>
</oxy:PlotView>

上下文菜单显示正确,但复选框位置错误,鼠标悬停时出现奇怪行为:

预期结果:

预期结果

实际结果:

实际结果

我错过了什么?

TIA

4

1 回答 1

1

改用 ItemContainerStyle :

<ContextMenu.ItemContainerStyle>
    <Style TargetType="{x:Type MenuItem}">
        <Setter Property="IsChecked" Value="{Binding IsCheckedByDefault}"/>
        <Setter Property="IsCheckable" Value="true"/>
        <Setter Property="Header" Value="{Binding Title}"/>
    </Style>
</ContextMenu.ItemContainerStyle>
于 2015-08-14T08:30:27.787 回答