Два ContextMenus одновременно для мультитач - PullRequest
0 голосов
/ 06 апреля 2011

Как я могу показать два ContextMenu в моем окне одновременно?

это мой класс

 public partial class Window1 : Window
    {
        ContextMenu contextMenu1 = new ContextMenu();
        ContextMenu contextMenu2 = new ContextMenu();
        public Window1()
        {
            InitializeComponent();
            contextMenu1.Items.Add("Hello1");
            contextMenu2.Items.Add("Hello2");

            contextMenu1.Placement = System.Windows.Controls.Primitives.PlacementMode.Relative;
            contextMenu2.Placement = System.Windows.Controls.Primitives.PlacementMode.Relative;

            contextMenu1.PlacementTarget = rectangle1;
            contextMenu2.PlacementTarget = rectangle2;
            contextMenu1.StaysOpen = true;
            contextMenu2.StaysOpen = true;

        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            contextMenu1.IsOpen = true;
            contextMenu2.IsOpen = true;
        }
    }

Ответы [ 3 ]

2 голосов
/ 06 апреля 2011

Обычно контекстное меню исчезает при щелчке в другом месте, кроме самого контекстного меню. Поэтому одновременное открытие двух контекстных меню потребует особой обработки.

Кроме того, эта настройка, скорее всего, приведет пользователя в замешательство.

Возможно, вам следует рассмотреть другой вариант (панель инструментов, панель свойств, каскадное контекстное меню)

EDIT

Теперь, когда вы добавили свой код к вопросу, я еще больше обеспокоен этим подходом. Что вы пытаетесь предложить пользователю? Вы должны просто использовать Grids или DockPanels вместо прямоугольников и добавлять к ним обычные меню:

    <DockPanel Width="200"
               Height="200">
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="Hello1" />
        </Menu>
        <Grid />
    </DockPanel>
    <DockPanel Width="200"
               Height="200">
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="Hello2" />
        </Menu>
        <Grid />
    </DockPanel>
</StackPanel>
1 голос
/ 06 апреля 2011

Вы можете использовать элемент управления Popup и перехватить событие правого клика, чтобы отобразить его.

К сожалению, вы начнете с нуля, и вам придется пересоздать контекстное меню, но не будет проблем с двумя открытыми одновременно.

0 голосов
/ 06 апреля 2011

Не зная много подробностей о том, что вы хотите сделать - это WPF! Таким образом, вы можете оформить все, что вы хотите. Вы можете отобразить диалоги / UserControls / Windows по щелчку правой кнопкой мыши и оформить их как контекстное меню или как они должны выглядеть. Благодаря этому у вас есть полный контроль над тем, что вы хотите отобразить ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...