Главная » Silverlight » Всплывающие окна и подсказки

0

В Silverlight реализована гибкая модель всплывающих подсказок (tooltips). Класс всплывающих подсказок ToolTip наследует класс ContentControl, поэтому в элементе ToolTip можно разместить практически любое содержимое.

Всплывающие подсказки представлены элементом управления ToolTip, но этот элемент не обязательно добавлять в разметку непосредственно. Вместо этого мож­но применить класс ToolTipService для конфигурирования всплывающей подсказки конкретного элемента путем установки его подключенного свойства. Тогда надстройка Silverlight автоматически создаст всплывающую подсказку и при необходимости выве­дет ее на экран.

Простейший пример — текстовая всплывающая подсказка. Для ее создания доста­точно добавить в любой элемент свойство ToolTipService. ToolTip, содержащее текст подсказки.

<Button ToolTipService.Тоо1Тір="Текст подсказки">

Content="K этой кнопке подключена подсказка"></Button>

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

Настройка всплывающей подсказки

Во всплывающую подсказку можно вставить более сложное содержимое, на­пример несколько вложенных элементов. Для этого нужно представить свойство ToolTipService. ToolTip как отдельный элемент. В следующем примере всплывающая подсказка определена с помощью вложенного элемента.

<Button Content="Кнопка с подсказкой"> <ToolTipService.ToolTip> <StackPanel> <TextBlock Margin="3" Text="Teкст подсказки"> </TextBlock>

<Image Source="happyface.jpg"></Iraage> <TextBlock Margin="3" Text="Eщe немного текста…"> </TextBlock> </StackPanel> </ToolTipService.ToolTip>

</Button>

Как и в предыдущем примере, надстройка Silverlight неявно создает элемент ToolTip. Отличие лишь в том, что теперь объект ToolTip содержит панель StackPanel, а не тек­стовую строку. Результат показан на рис. 5.9.

Рис. 5.9. Более сложная всплывающая подсказка

Совет. Не помещайте во всплывающую подсказку интерактивные элементы управления, потому что объект ToolTip не может получать фокус. Например, если поместить во всплывающую подсказку кнопку, она будет выведена на экран, но не будет реагировать на щелчки. При щелчке на ней событие будет сгенерировано даже не в родительской кнопке, а в нижележащем элементе страницы. Если все же необходимо добавить во всплывающую подсказку интерактивные элементы, примените, вместо элемента ToolTip, всплывающее окно Popup, как описано далее.

Более тонко управлять внешним видом всплывающей подсказки можно, явно опре­делив элемент ToolTip. Класс ToopTip наследует класс ContentControl и, следователь­но, поддерживает ряд определенных в нем полезных свойств. С их помощью можно настраивать размеры подсказки и выравнивание содержимого (свойства Width, Height, maxWidth, HorizontalContentAlignment, Padding и т.д.), шрифт (свойства FontFamily, FontSize, FontStyle и т.д.), цвета (свойства Background и Foreground). С помощью свойств HorizontalOf f set и VerticalOf f set можно сместить всплывающую подсказку в сторону от указателя мыши или вывести ее в заданной позиции.

В приведенной ниже разметке свойства элемента ToolTip задают красный цвет фона и белый цвет текста подсказки.

<Button Content="Кнопка с подсказкой"> <ToolTipService.ToolTip> <ToolTip Background="DarkRed" Foreground="White">

<StackPanel>

<TextBlock Margin="3" Text—"Текст подсказки"></TextBlock> clmage Source="happyfасе. jpg"></Image>

<TextBlock Margin="3" Text="Eщe немного текста…"></TextBlock> </StackPanel> </ToolTip> </ToolTipService.ToolTip> </Button>

Присвоив подсказке имя, можно взаимодействовать с ней программно. Например, свойство IsEnabled можно использовать для временного отключения всплывающей подсказки, а свойство isOpen — для ее программного вывода или сокрытия (или про­верки, выведена ли она на экран). Свойства Opened и Closed позволяют динамически генерировать содержимое всплывающей подсказки при ее открытии.

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

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

По теме:

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