У меня вопрос с двумя частями, я надеюсь, что нормально спросить их обоих сразу.WPF: Как управлять всплывающим контекстом меню в виде списка/gridview
У меня есть WPF ListView
с изображением GridView
.
Некоторое время назад я искал способ получить ContextMenu
в ListView
, который появляется только тогда, когда пользователь нажимает на фактический элемент ListView
.
Все решения, которые я нашел в Интернете, предложили поместить это ContextMenu
внутри ItemContainerStyle
, поэтому я сделал это, и он работает.
1. Вопрос, общий один
Но теперь это заставило меня задуматься ... если мой ListView
содержит тысячи пунктов, это значит я создал тысячи одинаковых ContextMenu
с в памяти, а? И если бы я сделал, нет ли лучшего способа получить один item ContextMenu
?
2. вопрос, конкретный один (устаревшее см EDIT ниже)
Теперь я стараюсь, чтобы получить другой ContextMenu
всплывал, когда пользователь нажимает на право на GridView
сек заголовка, и снова все решения предлагают положить его в GridViewColumnHeader
.
У меня есть две проблемы с этим. Во-первых, он снова создает одинаковые ContextMenu
s для каждого из столбцов, а во-вторых, появляется только сообщение ContextMenu
, когда пользователь щелкает правой кнопкой мыши на один из заголовков столбцов. Когда в области заголовка есть свободное пространство (поскольку для всех столбцов не требуется все свободное пространство), ContextMenu
не появится при щелчке правой кнопкой мыши на свободном пространстве области заголовка.
Есть ли способ всплыть одинContextMenu
, когда правый щелчок по области заголовка GridView
?
Я бы предпочел, чтобы решение было только в XAML, если это возможно.
Благодарим за помощь.
EDIT:
Пожалуйста, забудьте вторую часть вопроса. Я нашел свойство ColumnHeaderContextMenu
GridView
, которое точно выполняет то, что я искал.
И можно ли создать это контекстное меню только для всех элементов? – Nostromo
см. Редактирование. Набор является статическим ресурсом, и он будет создан только один раз. – Ron