Контекстное меню Silverlight ContextMenuService для нескольких элементов управления - PullRequest
1 голос
/ 21 июля 2011

Я создаю клиентов Silverlight и WPF для нашего проекта.

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

например. когда я рисую несколько линий

ContextMenu contextMenu = CreateLineMenu();

for (int i = 0; i < Points.Count - 1; i++)
        {
            Line l = new Line();
            ...
            canvas.Children.Add(l);
            ContextMenuService.SetContextMenu(l, contextMenu);
            }
        }

Меню работает только для строки, добавленной последней.

1 Ответ

1 голос
/ 21 июля 2011

Одно контекстное меню может быть назначено только одному родительскому объекту за раз, поскольку оно просто добавляется в визуальное дерево под этим дочерним элементом (и ни один визуальный элемент не может иметь несколько родителей в SL / WPF).

Если вы посмотрите на то, как контекстные меню определены в XAML, это станет более понятным.

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

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

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