Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 463 / 17 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 6:
Использование шаблона проектирования MVVM
В файле 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 (представления) и на панель приложения, которая содержит кнопку для сохранения данных приложения.