Введение в SilverLight 4: Поддержка уведомлений
И еще одна возможность приложений, работающих вне браузера, это возможность отображать уведомления. В данном случае под уведомлениями понимаются всплывающие окна, не требующие взаимодействия с пользователем (хотя они способны обрабатывать события от мыши, но не от клавиатуры) и исчезающие через заданный промежуток времени. Примеры таких окон можно найти, например, в приложении Microsoft Outlook, которое отображает всплывающие сообщения при получении нового письма.
Чтобы отобразить уведомление, достаточно создать объект типа NotificationWindow и установить свойство Content у созданного объекта. Свойство Content принимает любой объект, порожденный от FrameworkElement, то есть любой контейнер. После установки свойств Content, Width, Height, достаточно вызвать метод Show, принимающий время показа окна в миллисекундах.
Рассмотрим пример приложения, работающего вне браузера и отображающего примитивное окно в момент запуска. Интерфейс приложения реализуем следующим образом:
<UserControl x:Class="Notify_Chapter0.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel HorizontalAlignment="Center">
<TextBlock Text="Notification Demo"
TextAlignment="Center" FontSize="18">
</TextBlock>
<Button Name="btn" Visibility="Collapsed"
Content="Инсталировать приложение" FontSize="18"
Click="Button_Click"></Button>
<TextBlock Name="txt" Visibility="Collapsed"
TextWrapping="Wrap" TextAlignment="Center"
Text="Приложение должно быть запущено вне браузера"
FontSize="18">
</TextBlock>
</StackPanel>
</Grid>
</UserControl>
Во время запуска приложения, необходимо проверить, действительно ли приложение запущено вне браузера, и только затем приступать к созданию окна. Вот как это можно реализовать:
public MainPage()
{
InitializeComponent();
if (App.Current.IsRunningOutOfBrowser)
{
NotificationWindow notify = new NotificationWindow();
StackPanel panel = new StackPanel();
panel.Background = new SolidColorBrush(Colors.Gray);
panel.Width = 250;
panel.Height = 50;
TextBlock header = new TextBlock();
header.Text = "New message";
header.FontWeight = FontWeights.Bold;
TextBlock message = new TextBlock();
message.Text = "This is a new message";
panel.Children.Add(header);
panel.Children.Add(message);
notify.Content = panel;
notify.Width = panel.Width;
notify.Height = panel.Height;
notify.Show(10000);
}
else
{
if (App.Current.InstallState == InstallState.Installed)
{
txt.Visibility = Visibility.Visible;
}
else
{
btn.Visibility = Visibility.Visible;
}
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
App.Current.Install();
}
В результате, после запуска приложения, на экране можно увидеть следующую картину:
Как видно, уведомление отображается в системной области с небольшим отступом от нее (по 44 единицы).
Данная функциональность может быть полезна при обработке обновлений, коммуникациях, асинхронной обработке данных и др.
[…] Читать дальше на моем блоге о технологиях Опубліковані Monday, January 11, 2010 3:32 PM від Sergiy Baydachnyy […]
Sergiy Baydachnyy : Введение в SilverLight 4: Поддержка уведомлений
11.01.2010 at 15:32