Всплывающие и контекстные меню¶
Библиотека Панелей Инструментов и Меню содержит компонент PopupMenu
, который позволяет создавать всплывающие и контекстные меню для контролов.
Контекстные меню¶
Чтобы указать контекстное меню, установите для attached-свойства ToolbarManager.ContextPopup
для целевого контрола значение объекта PopupMenu
.
Вы можете добавить все типы элементов панели инструментов в контекстное меню. Определите элементы между начальным и конечным тегами <PopupMenu>
в XAML или добавьте элементы в коллекцию PopupMenu.Items
в коде.
xmlns:mxb="https://schemas.eremexcontrols.net/avalonia/bars"
<TextBox x:Name="textBox" Text="Text Editor" AcceptsReturn="True"
CornerRadius="0" FontFamily="Arial" FontSize="20" Height="200">
<mxb:ToolbarManager.ContextPopup>
<mxb:PopupMenu ShowIconStrip="True">
<mxb:ToolbarButtonItem Header="Undo" HotKeyDisplayString="Ctrl+Z"
Command="{Binding $parent[TextBox].Undo}"
IsEnabled="{Binding $parent[TextBox].CanUndo}"
Glyph="{SvgImage 'avares://bars_sample/Images/Toolbars/EditUndo.svg'}"/>
<mxb:ToolbarButtonItem Header="Redo" HotKeyDisplayString="Ctrl+Y"
Command="{Binding $parent[TextBox].Redo}"
IsEnabled="{Binding $parent[TextBox].CanRedo}"
Glyph="{SvgImage 'avares://bars_sample/Images/Toolbars/EditRedo.svg'}"/>
<mxb:ToolbarSeparatorItem/>
<mxb:ToolbarButtonItem Header="Clear"
Command="{Binding $parent[TextBox].Clear}" HotKey="Ctrl+Q"
Glyph="{SvgImage 'avares://bars_sample/Images/Toolbars/EditDelete.svg'}"/>
</mxb:PopupMenu>
</mxb:ToolbarManager.ContextPopup>
</TextBox>
Основные свойства и события всплывающего меню¶
ShowIconStrip
— Получает или устанавливает, следует ли отображать вертикальную полосу значков для элементов меню.Header
— Позволяет задать заголовок для меню.ShowHeader
— Возвращает или устанавливает, будет ли отображаться заголовок меню.ContentRightIndent
— Задает ширину пустого пространства справа от текста элементов меню.
Events
Opening
— Срабатывает, когда меню готово к отображению. Это событие позволяет отменить отображение меню.Opened
— срабатывает после отображения меню.Closing
— Срабатывает, когда меню вот-вот будет закрыто. Это событие позволяет отменить закрытие меню.Closed
— Срабатывает после закрытия меню.
Пример - Как назначить контекстные меню контролам определенного типа¶
Вы можете определить меню в коллекции Styles
, если вам нужно указать одно контекстное меню для нескольких контролов одного типа. В следующем примере задается attached-свойство ToolbarManager.ContextPopup
для контролов TextBox
, которые находятся в UserControl.
xmlns:mxb="https://schemas.eremexcontrols.net/avalonia/bars"
<UserControl.Styles>
<Style Selector="TextBox">
<Setter Property="mxb:ToolbarManager.ContextPopup">
<Setter.Value>
<Template>
<mxb:PopupMenu Focusable="False">
<mxb:ToolbarButtonItem Header="Cut" HotKeyDisplayString="Ctrl+X"
Command="{Binding $parent[TextBox].Cut}"
IsEnabled="{Binding $parent[TextBox].CanCut}"
Glyph="{SvgImage
'avares://DemoCenter/Images/Group=Context Menu, Icon=Cut.svg'}"/>
<mxb:ToolbarButtonItem Header="Copy" HotKeyDisplayString="Ctrl+C"
Command="{Binding $parent[TextBox].Copy}"
IsEnabled="{Binding $parent[TextBox].CanCopy}"
Glyph="{SvgImage
'avares://DemoCenter/Images/Group=Context Menu, Icon=Copy.svg'}"/>
<mxb:ToolbarButtonItem Header="Paste" HotKeyDisplayString="Ctrl+V"
Command="{Binding $parent[TextBox].Paste}"
IsEnabled="{Binding $parent[TextBox].CanPaste}"
Glyph="{SvgImage
'avares://DemoCenter/Images/Group=Context Menu, Icon=Paste.svg'}"/>
<mxb:ToolbarSeparatorItem/>
<mxb:ToolbarButtonItem Header="Undo" HotKeyDisplayString="Ctrl+Z"
Command="{Binding $parent[TextBox].Undo}"
IsEnabled="{Binding $parent[TextBox].CanUndo}"
Glyph="{SvgImage
'avares://DemoCenter/Images/Group=Basic, Icon=Undo.svg'}"/>
<mxb:ToolbarButtonItem Header="Redo" HotKeyDisplayString="Ctrl+Y"
Command="{Binding $parent[TextBox].Redo}"
IsEnabled="{Binding $parent[TextBox].CanRedo}"
Glyph="{SvgImage
'avares://DemoCenter/Images/Group=Basic, Icon=Redo.svg'}"/>
<mxb:ToolbarSeparatorItem/>
<mxb:ToolbarButtonItem Header="Select All" HotKeyDisplayString="Ctrl+A"
Command="{Binding $parent[TextBox].SelectAll}"/>
<mxb:ToolbarButtonItem Header="Clear"
Command="{Binding $parent[TextBox].Clear}"
Glyph="{SvgImage
'avares://DemoCenter/Images/Group=Context Menu, Icon=Delete.svg'}"/>
</mxb:PopupMenu>
</Template>
</Setter.Value>
</Setter>
</Style>
</UserControl.Styles>
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.