Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 464 / 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 (представления) и на панель приложения, которая содержит кнопку для сохранения данных приложения.