App.XamlとMainPage.Xaml (2/5)
作成:2014-01-18 11:54
更新:2014-01-18 11:54
更新:2014-01-18 11:54
■App.Xaml.csについて
では、App.xaml内にあるC#ソースコード「App.Xaml.cs」では、どのような処理が用意されているのでしょうか。下にソースコードを掲載したのでざっと眺めてみましょう(コメント類はカットしてあります)。
●using文
多数のusing文がありますね。SystemはおそらくC#利用者ならおなじみでしょうが、その他にWindowsパッケージとWindows.UI.Xamlパッケージのクラスが多くusingされているのがわかります。これらはアプリケーションとXamlに関するクラスがまとめられているところです。
●namespace MyWin8App
名前空間の指定ですね。アプリケーションは、たいていそのアプリケーション名の名前空間下にクラスが作成されます。
●sealed partial class App : Application
これが名前空間内に用意されるクラスの定義部分になります。「App」というクラスは、Windows.UI.Xamlパッケージに用意されているApplicationというクラスを継承して作成されます。このApplicationがアプリケーション本体としての機能を実装したものです。アプリケーションは、すべてこのクラスを継承して作成されます。
●public App()
コンストラクタですね。この中では、InitializeComponentを呼び出し、それからSuspendingというイベントにOnSuspendingメソッドを組み込んでいます。
●protected override void OnLaunched(LaunchActivatedEventArgs e)
このOnLaunchedメソッドは、起動時の処理を行うイベント用のメソッドです。ここでは「Frame」というクラスのインスタンスを作り、Window.Current.Contentに設定する処理をしています。まだよくわからないでしょうが、要するに「Frameというのをアプリケーションのウインドウとして画面に表示している」と考えるとよいでしょう。
●void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
これは表示されている画面(ページといいいます)の切り替えなどに失敗した時のエラーイベント用のメソッドです。
●private void OnSuspending(object sender, SuspendingEventArgs e)
アプリケーションが(他のアプリに処理が切り替わるなどして)一時停止した時のイベント要メソッドです。
――まだ細かな処理はわからないでしょうが、アプリケーションを起動して、重要なイベント用のメソッドを設定し、Frameというウインドウの土台のようなものを設定して表示させている、ということはなんとなくイメージできるでしょう。
これも、すぐにいろいろ書き換えたりすることはないので、だいたいの働きがわかれば今は十分でしょう。
●using文
多数のusing文がありますね。SystemはおそらくC#利用者ならおなじみでしょうが、その他にWindowsパッケージとWindows.UI.Xamlパッケージのクラスが多くusingされているのがわかります。これらはアプリケーションとXamlに関するクラスがまとめられているところです。
●namespace MyWin8App
名前空間の指定ですね。アプリケーションは、たいていそのアプリケーション名の名前空間下にクラスが作成されます。
●sealed partial class App : Application
これが名前空間内に用意されるクラスの定義部分になります。「App」というクラスは、Windows.UI.Xamlパッケージに用意されているApplicationというクラスを継承して作成されます。このApplicationがアプリケーション本体としての機能を実装したものです。アプリケーションは、すべてこのクラスを継承して作成されます。
●public App()
コンストラクタですね。この中では、InitializeComponentを呼び出し、それからSuspendingというイベントにOnSuspendingメソッドを組み込んでいます。
●protected override void OnLaunched(LaunchActivatedEventArgs e)
このOnLaunchedメソッドは、起動時の処理を行うイベント用のメソッドです。ここでは「Frame」というクラスのインスタンスを作り、Window.Current.Contentに設定する処理をしています。まだよくわからないでしょうが、要するに「Frameというのをアプリケーションのウインドウとして画面に表示している」と考えるとよいでしょう。
●void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
これは表示されている画面(ページといいいます)の切り替えなどに失敗した時のエラーイベント用のメソッドです。
●private void OnSuspending(object sender, SuspendingEventArgs e)
アプリケーションが(他のアプリに処理が切り替わるなどして)一時停止した時のイベント要メソッドです。
――まだ細かな処理はわからないでしょうが、アプリケーションを起動して、重要なイベント用のメソッドを設定し、Frameというウインドウの土台のようなものを設定して表示させている、ということはなんとなくイメージできるでしょう。
これも、すぐにいろいろ書き換えたりすることはないので、だいたいの働きがわかれば今は十分でしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; using Windows.ApplicationModel; using Windows.ApplicationModel.Activation; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; namespace MyWin8App { sealed partial class App : Application { public App() { this.InitializeComponent(); this.Suspending += OnSuspending; } protected override void OnLaunched(LaunchActivatedEventArgs e) { #if DEBUG if (System.Diagnostics.Debugger.IsAttached) { this.DebugSettings.EnableFrameRateCounter = true; } #endif Frame rootFrame = Window.Current.Content as Frame; // ウィンドウがアクティブであることだけを確認してください if (rootFrame == null) { rootFrame = new Frame(); rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0]; rootFrame.NavigationFailed += OnNavigationFailed; if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: } // フレームを現在のウィンドウに配置します Window.Current.Content = rootFrame; } if (rootFrame.Content == null) { rootFrame.Navigate(typeof(MainPage), e.Arguments); } // 現在のウィンドウがアクティブであることを確認します Window.Current.Activate(); } void OnNavigationFailed(object sender, NavigationFailedEventArgs e) { throw new Exception("Failed to load Page " + e.SourcePageType.FullName); } private void OnSuspending(object sender, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); //TODO: deferral.Complete(); } } }
※関連コンテンツ