Общие сведения о контекстном меню
Popup Управления предоставляет способ отображения содержимого в отдельном окне, расположенном поверх текущего окна приложения относительно обозначенного элемента или экранных координат. В данном разделе представлены Popup управления и предоставляет сведения о его использовании.
Что такое контекстное меню?
Объект Popup управления отображает содержимое в отдельном окне относительно элемента или точки на экране. Когда Popup является видимым, IsOpen свойству true
.
Note
Объект Popup не открывается автоматически при перемещении указателя мыши на родительский объект. Если вы хотите, чтобы Popup чтобы автоматически открыть, используйте ToolTip или ToolTipService класса. Дополнительные сведения см. в разделе Общие сведения о всплывающих подсказках.
Создание всплывающего окна
В следующем примере показано определение Popup управления, являющийся дочерним элементом элемента Button элемента управления. Так как Button может иметь только один дочерний элемент, в этом примере помещает текст для Button и Popup элементов управления в StackPanel. Содержание Popup отображается в TextBlock элемент управления, который отображает текст в отдельном окне, расположенном поверх окна приложения рядом с соответствующим Button элемента управления.
<Button HorizontalAlignment="Left" Click="DisplayPopup"
Width="150" Margin="20,10,0,0">
<StackPanel>
<TextBlock>Display Your Popup Text</TextBlock>
<Popup Name="myPopup">
<TextBlock Name="myPopupText"
Background="LightBlue"
Foreground="Blue">
Popup Text
</TextBlock>
</Popup>
</StackPanel>
</Button>
<Button Name="ButtonForPopup" HorizontalAlignment="Left"
Click="CreatePopup"
Width="150" Margin="20,10,0,0">
<StackPanel Name="aStackPanel">
<TextBlock>Create Popup</TextBlock>
</StackPanel>
</Button>
Элементы управления, реализующие контекстное меню
Вы можете создавать Popup элементы управления в другие элементы управления. Следующие элементы управления реализуют Popup управления для конкретных целей:
ToolTip. Если вы хотите создать подсказку для элемента, используйте ToolTip и ToolTipService классы. Дополнительные сведения см. в разделе Общие сведения о всплывающих подсказках.
ContextMenu. Если вы хотите создать контекстное меню для элемента, используйте ContextMenu элемента управления. Дополнительные сведения см. в разделе Общие сведения об элементе управления ContextMenu.
ComboBox. Если вы хотите создать элемент управления выбора, который содержит поле с раскрывающимся списком, может быть использовано отображаемое или скрытое, ComboBox элемента управления.
Expander. Если вы хотите создать элемент управления, отображающий заголовок со свертываемой областью отображения содержимого, используйте Expander элемента управления. Дополнительные сведения см. в разделе Общие сведения об элементе управления Expander.
Внешний вид и поведение контекстного меню
Popup Управления предоставляет функциональность, позволяющую настраивать свое поведение и внешний вид. Например, можно задать поведение открытия и закрытия, анимацию, эффекты прозрачности и точечного рисунка, и Popup размер и положение.
Поведение открытия и закрытия
Объект Popup отображает содержимое элемента управления, когда IsOpen свойству true
. По умолчанию Popup остается открытым до IsOpen свойству false
. Тем не менее, можно изменить поведение по умолчанию, задав StaysOpen свойства false
. Если задано это свойство false
, Popup окно содержимого имеет захват мыши. Popup Теряет мыши захвата и окно закрывается при возникновении события мыши за пределами Popup окна.
Opened И Closed событий при Popup окно содержимого открытым или закрытым.
Анимация
Popup Элемент управления имеет встроенную поддержку анимаций, которые обычно связаны с таким поведением, как постепенное появление и. Эти анимации можно включить, задав PopupAnimation свойства PopupAnimation значение перечисления. Для Popup анимации работал правильно, необходимо задать AllowsTransparency свойства true
.
Можно также применить анимацию, например Storyboard для Popup элемента управления.
Прозрачность и эффекты для точечных рисунков
Opacity Свойство для Popup управления не влияет на его содержимое. По умолчанию Popup окно содержимого непрозрачно. Для создания прозрачного Popup, задайте AllowsTransparency свойства true
.
Содержание Popup не наследует эффекты для точечных рисунков, таких как DropShadowBitmapEffect, непосредственно указать на Popup управления или любого другого элемента родительского окна. Для отображения содержимого из эффектов точечного рисунка Popup, необходимо задать эффект точечного рисунка непосредственно для его содержимого. Например если дочернего элемента для Popup — StackPanel, задайте эффект точечного рисунка на StackPanel.
Размер контекстного меню
По умолчанию Popup автоматически изменяется в соответствии с его содержимым. В случае автоматического изменения размера некоторые эффекты точечного рисунка могут быть скрыты, поскольку размер по умолчанию области экрана, который определен для Popup содержимого не предоставляет достаточно места для отображения эффектов точечного рисунка.
Popup содержимое может быть скрыто при установке RenderTransform содержимого. В этом случае часть содержимого может быть скрыт, если содержимое преобразованного Popup выходит за пределы области исходного Popup. Если эффект точечного рисунка или преобразования требуется больше места, можно определить поля вокруг Popup содержимого, чтобы освободить больше пространства для элемента управления.
Определение положения контекстного меню
Можно разместить всплывающее окно, задав PlacementTarget, PlacementRectangle, Placement, HorizontalOffset, и VerticalOffsetProperty свойства. Дополнительные сведения см. в разделе Поведение при размещении контекстного меню. Когда Popup отображается на экране, его положение не перемещен родительского.
Настройка размещения контекстного меню
Вы можете настроить размещение Popup управления, указав набор координат, относящихся к PlacementTarget место Popup для отображения.
Чтобы настроить размещение, задайте Placement свойства Custom. Затем определите CustomPopupPlacementCallback делегат, который возвращает набор возможных точек размещения и основные оси (в порядке предпочтения) для Popup. Точка, в которой отображается наибольшая часть Popup выбирается автоматически. См. пример в разделе Указание пользовательского расположения контекстного меню.
Контекстное меню и визуальное дерево
Объект Popup управления не имеет собственного визуального дерева; вместо этого он возвращает размер 0 (нулю) при MeasureOverride метод Popup вызывается. Тем не менее, если выбрано IsOpen свойство Popup для true
, создается новое окно со своим собственным визуальным деревом. Новое окно включает Child содержимое Popup. Ширина и высота нового окна не могут превышать 75 процентов от ширины или высоты экрана.
Popup Элемент управления сохраняет ссылку на его Child содержимое в виде логических дочерних. При создании нового окна содержимое Popup становится визуальным дочерним элементом окна и остается логическим дочерним элементом Popup. И наоборот Popup остается логическим родительским из его Child содержимого.