Dirk Bahle Ответов: 1

Как правильно оформить контекстное меню WPF?


Я буквально потратил несколько дней, пытаясь стилизовать контекстное меню текстового поля, но так и не смог найти полезного решения. По какой - то причине контекстное меню никогда не применяется к текстовому полю, в то время как некоторые части меню применяются-см. Скриншоты На связанной странице.

Странно то, что ContextMenu стилизован нормально в текстовом редакторе главного окна, но не в текстовом поле, как показано на связанной странице ниже. Кто-нибудь знает, что я здесь делаю не так?

Edi-Документация[^]

Что я уже пробовал:

Попытался изменить стиль контекстного меню (изменил цвет фона или цвет границы), чтобы увидеть, что не так, но это, похоже, не имеет эффекта, поэтому мне интересно, как это реализовано правильно...

PureNsanity

Существует множество потенциальных причин, по которым стиль WPF не будет применен должным образом. Любые изменения стиля, применяемые непосредственно к элементу, будут иметь наивысший приоритет, поэтому, если вы не видите, что это происходит, я бы начал с этого. Не могли бы вы предоставить фрагмент с текстовым полем и ContextMenu XAML?

Dirk Bahle

Мне не нужно знать много причин, мне нужно знать способ решения описанной проблемы. До сих пор я смотрел только здесь;
https://github.com/firstfloorsoftware/mui/tree/master/1.0/FirstFloor.Современный стиль

и обнаружил, что темное контекстное меню там тоже не работает.

Он работает здесь:
https://github.com/MahApps/MahApps.Metro/blob/develop/MahApps.Metro/Styles/Controls.Текстовое поле.язык XAML

..и я обнаружил, что он работает, потому что текстовое поле рестайлинговано свойством контекстного меню:


Так что для меня это тоже работает.

PureNsanity

Я даю вам знать, что без предоставленной информации это невозможно сказать-вы бы только догадывались. Я не пытаюсь рассказать вам обо всех способах, просто говорю, что мне нужно увидеть запрошенную информацию, иначе я не смогу вам рассказать.

1 Ответов

Рейтинг:
11

Dirk Bahle

MahApps.Метро/Контролирует.ContextMenu.xaml в develop · MahApps/MahApps. Metro · GitHub[^]

<contextmenu x:key="TextBoxMetroContextMenu" style="{StaticResource MetroContextMenu}">
    <menuitem style="{DynamicResource MetroMenuItem}" command="ApplicationCommands.Cut">
    <menuitem style="{DynamicResource MetroMenuItem}" command="ApplicationCommands.Copy">
    <menuitem style="{DynamicResource MetroMenuItem}" command="ApplicationCommands.Paste">
</contextmenu>


MahApps.Метро/Контролирует.TextBox. xaml в develop · MahApps/MahApps. Metro · GitHub[^]

<style x:key="MetroTextBox" targettype="{x:Type TextBox}">
  ...
  <Setter Property="ContextMenu" Value="{DynamicResource TextBoxMetroContextMenu}" />
</style>