Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 468 / 15 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 6:

Использование шаблона проектирования MVVM

< Лекция 15 || Самостоятельная работа 6: 12345 || Лекция 18 >

В файле StateUtilities.cs, Листинг 12.6, есть описание статического класса, который используется для хранения данных о режиме работы приложения – о том, запущено ли оно из списка приложений, или пользователь вернулся к нему после недавнего выхода (то есть, это значение позволяет узнать, было ли приложение запущено или активировано после приостановке)

using System;

namespace sdkMVVMCS
{
    public static class StateUtilities
    {
        private static Boolean isLaunching;

        //Устанавливается в true при запуске приложения
        //В false - при активации и при уходе с MainPage.xaml
        public static Boolean IsLaunching
        {
            get { return isLaunching; }
            set { isLaunching = value; }
        }
    }
}
Листинг 23.6. Код файла StateUtilities.cs

В Листинге 23.7 приведен фрагмент файла App.xaml.cs – обработчики запуска и активации.

// Код для исполнения при запуске приложения (например, с Рабочего стола)
        // TЭтот код не выполняется при активации приложения после деактиваии
        private void Application_Launching(object sender, LaunchingEventArgs e)
        {
            StateUtilities.IsLaunching = true;
        }

        // Код для выполнения при активации приложения 
		// (тогда, когда оно становится приложением переднего плана)
        // Этот код не исполняется при запуске приложения
        private void Application_Activated(object sender, ActivatedEventArgs e)
        {
            StateUtilities.IsLaunching = false;
        }
Листинг 23.7. Фрагмент кода файла App.xaml.cs

В Листинге 23.8 приведен код файла MainPage.xaml.

<phone:PhoneApplicationPage 
    x:Class="sdkMVVMCS.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    
    xmlns:views="clr-namespace:sdkMVVMCS.View"
    
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="696"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">

    <!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" 
Style="{StaticResource PhoneTextNormalStyle}" Text="MVVM Test App"/>
            <TextBlock x:Name="PageTitle" Text="game tracker" 
Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <!--ContentPanel - place additional content here-->
        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <StackPanel>
                <TextBlock Text="Items Collected" Foreground="{StaticResource PhoneAccentBrush}" 
Style="{StaticResource PhoneTextLargeStyle}" />
                <views:ItemView x:Name="ItemViewOnPage" Height="200"/>

                <TextBlock Text="Levels Completed" Foreground="{StaticResource PhoneAccentBrush}" 
Style="{StaticResource PhoneTextLargeStyle}" />
                <views:LevelView x:Name="LevelViewOnPage" Height="200"/>
            </StackPanel>
        </Grid>
    </Grid>

    <phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" >
            <shell:ApplicationBarIconButton IconUri="AppBarSave.png" Text="Save"  Click="AppBarSave_Click" />
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>

</phone:PhoneApplicationPage>
Листинг 23.8. Код файла MainPage.xaml

Обратите внимание на объявленное пространство имен views, на объявленные в коде пользовательские элементы управления ItemView и LevelView (представления) и на панель приложения, которая содержит кнопку для сохранения данных приложения.

< Лекция 15 || Самостоятельная работа 6: 12345 || Лекция 18 >