Windows 8 Developer Previewなので正式版とは異なる場合があります。 また、Windows Updateが走るときもあるため、エントリ執筆現在の情報をもとにかいています。
ApplicationDataContainerは一言で言えばSLとかWPでいうIsolatedStorageです。
今回はInternal static classを使って、Page間でよべるように(というかアプリケーション内ならどこでも)しました。
2つのページにRead用とSave用のButtonとTextBlock/Boxがあって、どちらからでも書き込んだり読んだりできます。
App.xaml.cs
using System; using System.Threading.Tasks; using Windows.ApplicationModel.Activation; using Windows.UI.Xaml; using Windows.Storage; namespace Application20 { partial class App { public App() { InitializeComponent(); } protected override void OnLaunched(LaunchActivatedEventArgs args) { Window.Current.Content = new MainPage(); Window.Current.Activate(); } } internal static class PublicData { // internal static String PublicString; // internal static float PublicFloat; //分離ストレージを作成 ここのデータはアプリを落としても消えない。 internal static ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; } }
MainPage.xaml
<UserControl x:Class="Application20.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="1366"> <Grid x:Name="LayoutRoot" Background="DarkBlue"> <StackPanel Orientation="Vertical"> <StackPanel Orientation="Horizontal"> <TextBlock Width="200" x:Name="ReadTextBlock"></TextBlock> <Button Content="Read" Click="ReadButton_Click"></Button> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBox Width="200" x:Name="SaveTextBox"></TextBox> <Button Content="Save" Click="SaveButton_Click"></Button> </StackPanel> </StackPanel> <Frame Width="500" Source="Application20.BlankPage1"></Frame> </Grid> </UserControl>
MainPage.xaml.cs
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Windows.Foundation; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data; namespace Application20 { partial class MainPage { public MainPage() { InitializeComponent(); } private void ReadButton_Click(object sender, RoutedEventArgs e) { ReadTextBlock.Text = (String)PublicData.localSettings.Values["Text"]; } private void SaveButton_Click(object sender, RoutedEventArgs e) { PublicData.localSettings.Values["Text"] = SaveTextBox.Text; } } }
BlankPage1.xaml
<Page x:Class="Application20.BlankPage1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="1366" d:DesignHeight="768"> <!--Common resources for default dark theme applications--> <UserControl.Resources> <SolidColorBrush x:Key="PageBackgroundBrush" Color="#FF1A1A1A"/> <SolidColorBrush x:Key="PageForegroundBrush" Color="White"/> <SolidColorBrush x:Key="HighlightBrush" Color="#FF26A0DA"/> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="{StaticResource PageBackgroundBrush}"> <Grid> <StackPanel Orientation="Vertical"> <StackPanel Orientation="Horizontal"> <TextBlock Width="200" x:Name="ReadTextBlock"></TextBlock> <Button Content="Read" Click="ReadButton_Click"></Button> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBox Width="200" x:Name="SaveTextBox"></TextBox> <Button Content="Save" Click="SaveButton_Click"></Button> </StackPanel> </StackPanel> </Grid> </Grid> </Page>
BlankPage.xaml.cs
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Windows.Foundation; using Windows.Graphics.Display; using Windows.UI.ViewManagement; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data; namespace Application20 { public sealed partial class BlankPage1 { public BlankPage1() { InitializeComponent(); } private void ReadButton_Click(object sender, RoutedEventArgs e) { ReadTextBlock.Text = (String)PublicData.localSettings.Values["Text"]; } private void SaveButton_Click(object sender, RoutedEventArgs e) { PublicData.localSettings.Values["Text"] = SaveTextBox.Text; } } }