Спонсор: Microsoft
Опубликован: 01.03.2010 | Доступ: свободный | Студентов: 942 / 39 | Оценка: 4.38 / 4.31 | Длительность: 09:26:00
Дополнительный материал 1:

Практикум

< Лекция 7 || Дополнительный материал 1: 12345678910111213

Создание внебраузерного приложения Silverlight

Для выполнения данного практического задания необходимо средство разработки Visual Studio.

Задание

Разработать простейшее приложение Silverlight. Модифицировать его для установки на клиентском компьютере, инсталлировать и деинсталлировать приложение. Модифицировать приложение, чтобы оно могло быть обновлено, обновить приложение. Модифицировать приложение, чтобы оно могло определять наличие подключения к Интернет, проверить работу отключив сетевой интерфейс.

Установка на клиентском компьютере

Создаем проект Silverlight, как описано в разделе " Создание простого приложения Silverlight", согласно рис. P1, рис. P.2 и рис. P.3. Добавляем в проект файл (Add existing Item) - иконку icon16.png, icon32.png, icon48.png, icon128.png. Открываем свойства проекта Silverlight. И включаем свойство "Enable running application out of the browser". Кроме этого задаем свойства "Out-Of-Browser Settings". Используем в качестве иконки добавленный рисунок.

Изменение свойств проекта для работы вне приложения браузера

увеличить изображение
Рис. P.53. Изменение свойств проекта для работы вне приложения браузера

Добавим небольшой текст в MainPage.xaml, который будет отображать состояние приложения.

<TextBlock 
  x:Name="textBox"
  Text="Приложение Silverlight. Версия 1" 
  HorizontalAlignment="Left"/>

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

Установка приложения Silverlight

увеличить изображение
Рис. P.54. Установка приложения Silverlight

Нажимаем установить, затем выбираем места, в которые будут размещены ярлыки

Установка ярлыков

Рис. P.55. Установка ярлыков

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

Удаление приложения

Рис. P.56. Удаление приложения

Тоже самое можно сделать и в браузере. Приложение также будет удалено.

Добавим в приложение код (файл MainPage.xaml.cs), позволяющий определить работает приложение в браузере или нет.

public MainPage()
{
    InitializeComponent();
    if (App.Current.IsRunningOutOfBrowser)
    { textBox.Text += ". Работа локально"; }
    else
    { textBox.Text += ". Работа в броузере"; }
}

Запускаем отладку и устанавливаем приложение локально, должно получиться:

Локальное и браузерное приложения

Рис. P.57. Локальное и браузерное приложения

Добавим кнопку, при нажатии на которую приложение будет установлено или удалено.

<Button 
  x:Name="buttonInstall" 
  Click="Button_Click" 
  HorizontalAlignment="Left"/>

И код в описание класса MainPage():

if (App.Current.InstallState == 
    System.Windows.InstallState.Installed)
{
    buttonInstall.Content = "Установлено";
}
else
{
    buttonInstall.Content = " Не установлено. Установить";
}
App.Current.InstallStateChanged += 
    new EventHandler(Current_InstallStateChanged);

В зависимости от состояния установки, изменяется надпись на кнопке. Кроме того, добавляется обработчик события изменения состояния установки:

void Current_InstallStateChanged(object sender, EventArgs e)
{
    if (App.Current.InstallState ==
        System.Windows.InstallState.Installed)
    {
        buttonInstall.Content = "Установлено";
    }
    else
    {
        buttonInstall.Content = " Не установлено. Установить";
    }
}

Обработчик событий нажатия кнопки:

private void Button_Click(object sender, RoutedEventArgs e)
{
    if (App.Current.InstallState ==
        System.Windows.InstallState.NotInstalled)
    {
        App.Current.Install();
    }            
}

После запуска должно быть:


Рис. P.58.

При нажатии на кнопку приложение будет установлено.

Обновление приложения

Добавим кнопку и текст на страницу, а также, код в MainPage.xaml.cs, позволяющий отследить версию приложения и сразу же обновить его:

<TextBlock 
  x:Name="textBox1"
  HorizontalAlignment="Left"/>
<Button 
  x:Name="buttonUpdate"
  Content="Проверить обновления"
  Click="Button1_Click" 
  HorizontalAlignment="Left"/>

private void Button1_Click(object sender, RoutedEventArgs e)
{
    App.Current.CheckAndDownloadUpdateAsync();
    App.Current.CheckAndDownloadUpdateCompleted += 
        new CheckAndDownloadUpdateCompletedEventHandler
            (Current_CheckAndDownloadUpdateCompleted);
}
void Current_CheckAndDownloadUpdateCompleted
    (object sender, CheckAndDownloadUpdateCompletedEventArgs e)
{
    if (e.UpdateAvailable)
    {
        textBox1.Text = "Установлены обновления. 
                       Перезапустите приложение";
    }
    else
    {
        textBox1.Text = "Новых обновлений нет";
    }
}

Запустим приложение в браузере и установим его, предварительно удалив старое. Затем изменим текст надписи в проекте на "Приложение Silverlight. Версия 2" и откомпилируем приложение 2-ой версии. Запустим приложение локально и нажмем на кнопку "Проверить обновления". Затем перезапустим его. Получим:

Проверка и установка обновлений

Рис. P.59. Проверка и установка обновлений

При работе в браузере обновления, естественно, не проверяются, т.к. работает всегда свежая версия.

Проверка подключения к Интернету

Добавим в xaml файл текстовый блок:

<TextBlock 
    x:Name="networkIndicator"
    HorizontalAlignment="Left"/>

Он будет отражать состояние сети. В код добавим:

using System.Net.NetworkInformation;

и в конструктор класса MainPage():

NetworkChange.NetworkAddressChanged += 
    new NetworkAddressChangedEventHandler
        (NetworkChange_NetworkAddressChanged);
bool online = NetworkInterface.GetIsNetworkAvailable();
networkIndicator.Text = online ?
    "ONLINE" : "OFFLINE";

А также, обработчик события NetworkAddressChanged:

void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
    networkIndicator.Visibility =
        App.Current.IsRunningOutOfBrowser ?
        Visibility.Visible : Visibility.Collapsed;
    bool online = NetworkInterface.GetIsNetworkAvailable();
    networkIndicator.Text = online ?
        "ONLINE" : "OFFLINE";
}

Скомпилируем проект. Проверим обновления локального приложения и перезапустим его. Теперь откроем "Центр управления сетями и общим доступом" из панели управления Windows и откроем "Сетевые подключения". Теперь отключим действующее сетевое подключение:

Отключение сети

Рис. P.60. Отключение сети

Запустим приложение, должны увидеть следующее:

Работа локального приложения без сети

Рис. P.61. Работа локального приложения без сети

Теперь, не закрывая, приложение включим сеть. Приложение через некоторое время определит, что сеть есть.

Работа локального приложения с сетью

Рис. P.62. Работа локального приложения с сетью

Заключение

На данном практическом занятии мы создали Silverlight приложение, которое установили для работы локально. Рассмотрели вопросы обновления внебраузерных приложений и поддержку работы без подключения к интернету. Исходный код находится в файле

< Лекция 7 || Дополнительный материал 1: 12345678910111213
Атанас Маринов
Атанас Маринов
Болгария
Pavel Pelevin
Pavel Pelevin
Украина, Одесса