UserControl со свойством ContextMenu - PullRequest
0 голосов
/ 27 июня 2011

Как добавить в Silverlight свойство ContextMenu в UserControl (и как я могу его использовать), если я хочу добавить это ContextMenu только к одному дочернему элементу управления в UserControl?

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Вам необходимо установить Silverlight Toolkit , тогда вы можете использовать ContextMenuService.

Вы можете добавить ContextMenu к UserControl следующим образом: -

 <UserControl ... blah blah...>
     <ContextMenuService.ContextMenu>
        <MenuItem Header="First Item" Click="FirstItem_Click" />
        <MenuItem Header="Second Item" Click="SecondItem_Click" />
     </ContextMenuService.ContextMenu>
     <Grid x:Name="LayoutRoot"> </Grid>
 </UserControl>

У вас просто есть обработчики событий click в вашем коде позади UserControl для ответа на выбор пункта меню.

Если вы используете MVVM, то MenuItem также имеет свойство Command, к которому вы можете привязаться.

Вы можете добавить это ContextMenuService.ContextMenu присоединенное свойство к любому элементу каркаса внутри UserControl, если вы хотите предоставить конкретные меню для определенных областей пользовательского интерфейса.

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

Этого легко достичь, используя SL4PopupMenu, доступный в виде пакета Nuget или загружаемый здесь:

http://sl4popupmenu.codeplex.com

Тогда все, что вам нужно сделать, это добавить следующее свойство в свой UserControl:

PopupMenu _menu;

PopupMenu Menu
{
    get
    {
        return _menu;
    }
    set
    {
        _menu = value;
        _menu.AddTrigger(TriggerTypes.RightClick, ChildControl);
    }
}

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

...