WPF и OxyPlot: Checkable ContextMenu, динамически генерируемый

1

У меня есть окно WPF с представлением OxyPlot. Я пытаюсь добавить функциональность скрыть/показать каждую серию, основываясь на динамически сгенерированном, проверяемом контекстном меню сюжета. Идея состоит в том, чтобы иметь объект ObservableCollection<T>, связанный с ItemsSource контекстного меню, где T - класс, который содержит в основном заголовок сериала в виде строки, а статус проверки по умолчанию - boolean.

Выдержка из 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>

Контекстное меню отображается правильно, но флажки находятся не в том месте, и у него странное поведение при наведении мыши:

Ожидаемый результат:

Изображение 174551

Фактический результат:

Изображение 174551

Что мне не хватает?

ТИА

Теги:
wpf
oxyplot

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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню