Блог Сергея Байдачного

Мой блог о технологиях

Введение в SilverLight 4: Поддержка уведомлений

with one comment

И еще одна возможность приложений, работающих вне браузера, это возможность отображать уведомления. В данном случае под уведомлениями понимаются всплывающие окна, не требующие взаимодействия с пользователем (хотя они способны обрабатывать события от мыши, но не от клавиатуры) и исчезающие через заданный промежуток времени. Примеры таких окон можно найти, например, в приложении 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();
}

В результате, после запуска приложения, на экране можно увидеть следующую картину:

clip_image002

Как видно, уведомление отображается в системной области с небольшим отступом от нее (по 44 единицы).

Данная функциональность может быть полезна при обработке обновлений, коммуникациях, асинхронной обработке данных и др.

Реклама

Written by Sergiy Baydachnyy

11.01.2010 в 15:18

Опубликовано в SilverLight

Tagged with

Один ответ

Subscribe to comments with RSS.

  1. […] Читать дальше на моем блоге о технологиях Опубліковані Monday, January 11, 2010 3:32 PM від Sergiy Baydachnyy […]


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: