Надстройка Silverlight распознает три типа простых кнопок: Button (Кнопка), CheckBox (Флажок) и RadioButton (Переключатель). Все эти элементы управления наследуют классы ButtonBase и ContentControl.
Класс ButtonBase содержит всего несколько самых необходимых членов. В нем определены событие Click и свойства IsFocused, IsMouseOver и IsPressed, имеющие статус “только чтение”.
Кроме того, класс ButtonBase содержит свойство ClickMode, определяющее, когда генерируется событие Click в ответ на действие мыши. По умолчанию оно имеет значение ClickMode.Release, при котором событие Click генерируется в момент отпускания кнопки мыши. При значении ClickMode.Press событие Click генерируется в момент первого нажатия кнопки мыши. Значение ClickMode.Hover задает генерацию события Click, когда пользователь наведет указатель на кнопку и на некоторое время задержит его.
Все эти кнопки, в том числе и кнопки примитивов RepeatButton и ToggleButton являются аналогами идентичных элементов управления WPF, поэтому здесь мы их не будем рассматривать. (см. “WPF – кнопки”)
Кнопка HyperlinkButton
Кнопка Button довольно простая: пользователь щелкает на ней, и она генерирует событие Click, обрабатываемое в коде. В отличие от нее, кнопка HyperlinkButton дает команду браузеру перейти к другой веб-странице и завершает текущее приложение Silverlight.
Элемент HyperlinkButton не отображает фон, как обычная кнопка. В отличие от нее, он просто выводит значение свойства Content. По умолчанию текст выводится синего цвета, не подчеркнутый. Задать подчеркивание можно с помощью свойства TextDecorations. При наведении указателя на кнопку HyperlinkButton он принимает вид руки, свидетельствуя о том, что указатель наведен на гиперссылку. По мере необходимости этот эффект можно переопределить с помощью свойства Cursor. Существуют три способа использования кнопки HyperlinkButton:
- Перенаправление браузера на внешний веб-сайт. Для этого присвойте свойству NavigateUri абсолютный URL-адрес, указывающий на целевую веб-страницу. Можете также присвоить свойству TargetName имя фрейма, в котором нужно открыть страницу. Учитывайте, что после того, как вы покинете текущую страницу, приложение Silverlight завершит работу. По этой причине данный способ использования кнопки HyperlinkButton применяется редко.
- Передача фрейма другой странице Silverlight. Убедитесь в том, что на странице есть элемент управления Frame, и присвойте свойству NavigateUri относительный URI-адрес, указывающий на другой файл XAML в текущем проекте.
- Выполнение какой-либо операции в коде. Не устанавливайте свойство NavigateUri. Вместо этого создайте обработчик события Click, выполняющий нужную операцию.
Входная HTML-страница может предотвратить навигацию к внешнему веб-сайту. Для этого нужно добавить параметр enableNavigation в раздел <object> входной страницы и присвоить ему значение false. При этом останется возможность использовать HyperlinkButton для внутренней навигации по фреймам или для запуска обработчика события Click.
Ниже показан пример использования кнопки HyperlinkButton:
<StackPanel Margin="10,5">
<TextBlock>Программирование на языке C#, платформа .NET</TextBlock>
<HyperlinkButton HorizontalAlignment="Right" NavigateUri="http://professorweb.ru"
Content="www.professorweb.ru" Margin="10" />
</StackPanel>
