Опубликован: 02.08.2013 | Уровень: для всех | Доступ: платный
Самостоятельная работа 10:

Хранение данных на устройстве

Аннотация: Данная работа посвящена хранению данных на устройстве.

Цель работы: освоить технологию хранения данных на устройстве

Хранение данных на устройстве

Рассмотрим учебное приложение (P10_1), рис. 33.1. которое демонстрирует различные способы работы с данными в Windows Phone 8. Здесь использован адаптированный код из следующих материалов, к которым вы можете обратиться для того, чтобы найти ссылки на разделы справочной информации по используемым API: <Краткое руководство: работа с файлами и папками в Windows Phone 8> (http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681698%28v=vs.105%29.aspx), <Краткое руководство: работа с параметрами в Windows Phone>, (http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714090%28v=vs.105%29.aspx).

Окно проекта P10_1

увеличить изображение
Рис. 33.1. Окно проекта P10_1

В проекте есть несколько страниц, страница MainPage.xaml используется для демонстрации работы с файлами, которые хранятся в установочном пакете приложения. В частности это – файл HelloFile.txt, содержимого которого будет считано и выведено в текстовое поле на странице. Страница AppSettingx.xaml используется для демонстрации работы с параметрами, которые можно хранить в изолированном хранилище параметров, страница LocalFolder.xaml используется для демонстрации работы с локальной папкой приложения.

В Листинге 33.1 приведен код страницы MainPage.xaml, здесь объявлены кнопки-гиперссылки для вызова других страниц и кнопка, обработчик которой содержит код, демонстрирующий работу с данными, хранящимися среди данных установочного пакета приложения.

<phone:PhoneApplicationPage
    x:Class="P10_1.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"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">

    <!--LayoutRoot представляет корневую сетку, где размещается все содержимое страницы-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel содержит имя приложения и заголовок страницы-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock Text="ДАННЫЕ" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
            <TextBlock Text="главная" Margin="9,-7,0,0" 
Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <!--ContentPanel — поместите здесь дополнительное содержимое-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <HyperlinkButton Content="Работа с локальной папкой" HorizontalAlignment="Left" 
Margin="78,368,0,0" VerticalAlignment="Top" NavigateUri="/LocalFolder.xaml"/>
            <HyperlinkButton Content="Параметры приложения" HorizontalAlignment="Left" 
Margin="91,445,0,0" VerticalAlignment="Top" NavigateUri="/Appsettings.xaml"/>
            <Button x:Name="btnHello" Content="Приветствие" 
HorizontalAlignment="Left" Margin="91,211,0,0" VerticalAlignment="Top" 
Width="280" Click="btnHello_Click"/>
            <TextBlock x:Name="txtHello" HorizontalAlignment="Left" Margin="78,36,0,0" 
TextWrapping="Wrap" Text="Здесь будет приветствие" VerticalAlignment="Top" 
Height="86" Width="310"/>

        </Grid>

    </Grid>

</phone:PhoneApplicationPage>
Листинг 33.1. Файл MainPage.xaml

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

using System;
using System.Windows;
using Microsoft.Phone.Controls;

using Windows.Storage;
using System.IO;

namespace P10_1
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Конструктор
        public MainPage()
        {
            InitializeComponent();

        }

        //Получение данных файла, который хранится в устанновочном пакете приложения
        private async void btbHello_Click(object sender, RoutedEventArgs e)
        {
            //Получаем файл из установочного пакета приложения
            StorageFile helloFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///HelloFile.txt"));
            //Открываем файл для чтения
            using (Stream file = await helloFile.OpenStreamForReadAsync())
            //Читаем данные и выводим в поле
            using (StreamReader streamReader = new StreamReader(file))
            {
                this.txtHello.Text = streamReader.ReadToEnd();
            }
        }
    }
}
Листинг 33.2. Файл MainPage.xaml.cs
Вася Пупкин
Вася Пупкин
Россия, с. Оймякон
антон Антонкин
антон Антонкин
Россия