1.環境
Windows7(体験版)
VisualStdio2010Expres for WindowsPhone
DirectX10に対応したPC
2.ソースコード
Mainページのソース
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; namespace SampleCodeList { public partial class MainPage : PhoneApplicationPage { // コンストラクター public MainPage() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new Uri("/PhonePage1.xaml?Name="+"MainPage!!", UriKind.Relative)); } } }Page1のソース
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; { public partial class PhonePage1 : PhoneApplicationPage { public PhonePage1() { InitializeComponent(); } bool isBackFlag = false; private void Button_Click(object sender, RoutedEventArgs e) { //この時画面遷移をするが、このPhonePage1インスタンスは残っている NavigationService.Navigate(new Uri("/PhonePage2.xaml", UriKind.Relative)); } //画面遷移毎に呼ばれる。 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { //クエリキー取得 IDictionaryPage2ページのソースparam = NavigationContext.QueryString; if (param.ContainsKey("Name")) { this.textEmpty.Text = "こんにちは" + param["Name"] + "さん"; } // base.OnNavigatedTo(e); if (isBackFlag) NavigationService.GoBack(); base.OnNavigatedTo(e); isBackFlag = true; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; namespace SampleCodeList { public partial class PhonePage2 : PhoneApplicationPage { public PhonePage2() { InitializeComponent(); } } }3.キャプチャーとソース内容
このサンプルアプリは、下記3点が含まれたサンプルです。
・画面遷移の方法
・ページをMainPage->Page1->Page2と進んだ後、BackKey押下で
MainPageへ行く方法(一度ホーム画面へ行くと無効になってしまうw)
・ページ間で文字列を渡す方法。
Ming画面 |
Page1画面 |
Page2画面 |
Main画面から「backgroud」ボタンを押下
内部で文字列を仕込んでPage1へ遷移するため
NavigationService.Navigate(new Uri("/PhonePage1.xaml?Name="+"MainPage!!", UriKind.Relative));
と記述しPage1へ遷移
MainPage で仕込んだMinPage!!という文字列をPage1へ受け取ってTextBlockへ表示。
Page1からPage2へ遷移
通常、ここでBackKeyを押下するとPage1ですが、今回はMainページへ遷移するように変更しました。
というか・・・・・WindowsPhone開発って結構ハードル高い
たとえば・・
Marketplaceに並べるアプリを開発する場合は、
Windows Phone 7 Application Certification Requirementsの
「5.2.4 Use of Back Button」に引っかかるため、
BackKeyは必ず有効にしておかなきゃいけない・・・・・
BackKey無効な仕組みをAPIとして提供しているのに・・・それを規約レベルでできないようにしているなんて・・・・・
開発者なかせ?w
今日はこんなところです。
以上です。
0 件のコメント:
コメントを投稿