Главная » Silverlight » Всплывающее окно Элемент управления Popup (Всплывающее окно) похож на элемент ToolTip, но ни один из них не наследует другой.

0

Как и ToolTip, элемент Popup может содержать только один элемент, которым может быть любой элемент Silverlight. Учитывайте, что он хранится в свойстве Popup. Chi Id, а не Content. Как и в случае ToolTip, содержимое элемента Popup может выходить за пределы страницы. И наконец, элемент Popup можно размещать, выводить и скрывать с помощью тех же свойств, что и ToopTip.

Однако между элементами Popup и ToolTip существуют важные отличия.

•       Элемент Popup никогда не выводится автоматически. Чтобы он появился на экране, нужно установить его свойство IsOpen. Кроме того, он не исчезнет, пока свойству IsOpen не будет присвоено значение false.

•       Элемент Popup может получать фокус. По этой причине в нем можно разме­щать интерактивные элементы управления, такие как Button. Это главная при­чина использования Popup вместо ToolTip.

Поскольку элемент Popup должен быть выведен вручную, во многих случаях предпо­чтительнее создать его в коде, а не в разметке. Однако создать его в разметке XAML так же легко, как и ToolTip, нужно лишь добавить в него свойство Name, чтобы им можно было манипулировать в коде. Место элемента Popup в разметке не играет роли, потому что его левый верхний угол всегда выравнивается относительно левого верхнего утла области содержимого Silverlight. Рассмотрим следующий пример.

<StackPanel Margin="20"> <TextBlock TextWrapping="Wrap"

MouseLeftButtonDown="txt_MouseLeftButtonDown" Text="щелкните здесь, чтобы открыть всплывающее окно"> </TextBlock>

<Popup х:Name="popUp" MaxWidth="200"> <Border Background="Lime"

MouseLeftButtonDown="popUp_MouseLeftButtonDown"> <TextBlock Margin="10" Text="Это всплывающее окно"> </TextBlock> </Border> </Popup>

</StackPanel>

Кроме разметки, необходим несложный код, выводящий элемент Popup при щелчке кнопкой мыши на текстовом блоке и скрывающий его при щелчке в окне.

private void txt_MouseLeftButtonDown(object sender,

MouseButtonEventArgs e)

{

popUp.IsOpen = true;

}

private void popUp_MouseLeftButtonDown(object sender,

MouseButtonEventArgs e)

{

popUp.IsOpen = false;

}

Результат показан на рис. 5.10.

Рис. 5.10. Всплывающее окно, имитирующее всплывающую подсказку

Совет. Для вывода более сложного всплывающего окна можно создать пользовательский элемент управления и применить его в качестве содержимого элемента Popup. Разместите экземпляр пользовательского элемента управления в коде всплывающего окна. Конечный результат будет тот же, но разметка будет существенно проще. Если же нужно, чтобы всплывающее окно обладало всеми характеристиками настоящего диалогового окна, примените элемент управления childwindow (см. главу 7).

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии