Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
course_(Windows&Web).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.68 Mб
Скачать

Поддержка пульта дистанционного управления

Silverlight 5 поддерживает и работу с пультом. Данная функциональность стала доступна благодаря поддержке события MediaCommand, которое доступно у всех UIElement. Иными словами, если вы хотите обрабатывать нажатия кнопок пульта, то Вам следует обработать это событие у родительского контейнера (от дочерних элементов оно как раз туда и свалится). Чтобы понять, какая кнопка на пульте была нажата, обработчик события получает доступ к свойству в MediaCommandEventArgs, содержащему свойство перечислимого типа MediaCommand. Последнее и содержит информацию по нажатой кнопке.

Работа с текстом

Silverlight 5 предлагает несколько интересных возможностей при работе с текстом. Так, элементы управления Control, TextBlock и TextElement, имеют новое свойство CharacterSpacing. Это свойство позволяет установить расстояние между символами внутри текста.

Свойство LineHeight позволяет установить ширину строки (можно интерпретировать, как расстояние между строками) и определено в таких элементах как Block, TextBlock, TextBox и RichTextBox. Для элемента RichTextBox можно также задать стратегию с помощью свойства LineStackingStrategy. На рис. 5.4 пример текста внутри элемента TextBlock с расстоянием между строками 30 и расстоянием между символами – 200:

Рисунок 5.4. Пример возможности TextBlock в Silverlight 5.

Наконец, Silverlight 5 стал поддерживать два новых текстовых элемента, это RichTextBlock и RichTextBlockOverflow. Эти элементы аналогичны элементам RichTextBox и RichTextBoxOverflow, но позволяют отображать текст только на чтение.

Рассмотрим небольшой пример с элементом RichTextBlockOverflow:

<StackPanel x:Name="LayoutRoot" Background="White" Orientation="Horizontal" VerticalAlignment="Top"> <RichTextBlock Width="250" FontSize="16" OverflowContentTarget= "{Binding ElementName=SecondBox}"> <Paragraph> В лесу родилась елочка, </Paragraph> . . . . . . . . //повторить 20 разJ </RichTextBlock> <RichTextBlockOverflow Width="250" Name="SecondBox"> </RichTextBlockOverflow> </StackPanel>

Результат работы этого кода показан на рис. 5.5:

Рисунок 5.5. Пример с элементом RichTextBlockOverflow в Silverlight 5.

Как видно, RichTextBlockOverflow может отображать текст, который не «вмещается» в основной элемент RichTextBlock. Благодаря таким элементам мы можем размещать текст в 2, 3 и более колонках (или реализовывать более сложные сценарии).

Печать

Silverlight 5 позволяет теперь не только реализовать растровую, но и векторную печать. Для этих целей используется все тот же метод Print класса PrintDocument, который осуществляет попытку печати в векторном формате, а в случае неудачи (принтер не поддерживает), перейти к печати в растровом виде. Растровую печать можно инициировать с помощью нового метода PrintBitmap.

P/Invoke

В документации эта возможность пока не описана, но она уже реализована – возможность вызова методов Windows API из Silverlight приложений, обладающих повышенными полномочиями. Причем речь идет о приложениях, которые работают как в браузере, так и вне браузера. Поскольку вызов нативных функций в .NET обычно осуществляется с помощью атрибута DllImport. Запустим приложение с повышенными привилегиями:

public partial class MainPage : UserControl { [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); public MainPage() { MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0); InitializeComponent(); } }

На экране, поверх браузера вы увидите стандартный MessageBox.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]