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)
{
//クエリキー取得
IDictionary param = NavigationContext.QueryString;
if (param.ContainsKey("Name"))
{
this.textEmpty.Text = "こんにちは" + param["Name"] + "さん";
}
// base.OnNavigatedTo(e);
if (isBackFlag) NavigationService.GoBack();
base.OnNavigatedTo(e);
isBackFlag = true;
}
}
}
Page2ページのソース
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 件のコメント:
コメントを投稿