えムナウ Blog

えムナウ の なすがまま

目次

Blog 利用状況

ニュース


follow mnow at http://twitter.com


えムナウのプログラミングのページ

INETAJ

書庫

日記カテゴリ

ギャラリ

Windows8 グリッドアプリケーションを解析する-その3

前の記事はこちら。

Windows8 グリッドアプリケーションを解析する-その1

Windows8 グリッドアプリケーションを解析する-その2

 

グリッドアプリケーションを作ってView関係のクラス図を作った。

ViewClasses

 

LayoutAwarePage クラス

アプリケーションのビューステートと表示状態のマップ、GoBack、GoForward、GoHome、ナビゲーション用のマウスおよびキーボードのショートカット、ナビゲーションの状態管理およびプロセス継続時間管理、ディクショナリー型ビュー モデル、を実装した各ページの基底クラスである。

 

コンストラクタ

ディクショナリー型ビュー モデルの初期化、Loaded イベント・Unloaded イベントの作成を行い、Loaded イベントでは StartLayoutUpdates、ナビゲーション用のマウスおよびキーボードのショートカット用のイベントの登録が行われる、Unloaded イベントでは StopLayoutUpdates、ナビゲーション用のマウスおよびキーボードのショートカット用のイベントの削除が行われる。

 

アプリケーションのビューステートと表示状態のマップ

StartLayoutUpdates Loaded イベントから呼び出されるのでPageでは直接呼び出す必要はない、ページ内のコントロールで必要があればLoaded イベントから呼び出す、ApplicationView.Valueを表示状態とする、初回呼び出しだけSizeChangedイベントの登録を行う。

SizeChangedイベントは InvalidateVisualState を呼ぶ。

StopLayoutUpdates Unloaded イベントから呼び出されるのでPageでは直接呼び出す必要はない、ページ内のコントロールで必要があればUnloaded イベントから呼び出す、StartLayoutUpdates を呼び出した全てのコントロールがStopLayoutUpdatesを呼び出したらSizeChangedイベントの削除を行う。

InvalidateVisualState StartLayoutUpdates を呼び出した全てのコントロールに対しApplicationView.Valueを表示状態として反映する。

 

GoBack、GoForward、GoHome

Frame に対して GoBack、GoForward、GoHome を実行する。 GoHome は可能な回数分Frame.GoBackを実行して実装される。

 

ナビゲーション用のマウスおよびキーボードのショートカット

AcceleratorKeyActivated イベントハンドラ
前に戻るキーまたは Alt キーを押しながら左方向キーを押すと前に戻り、次に進むキーまたは Alt キーを押しながら右方向キーを押すと次に進む。

PointerPressed イベントハンドラ
マウスの[戻る] を押すと前に戻り、 [進む] を押すと次に進む。

 

ナビゲーションの状態管理およびプロセス継続時間管理

OnNavigatedTo 
フレームに表示されるときに呼び出される。
1)NavigationEventArgs の NavigationMode が NavigationMode.New の場合、次に進むナビゲーションをクリアする。
2)LoadState を NavigationEventArgs の Parameter と 前のセッションでこのページによって保存された状態のディクショナリ(NavigationMode.New の場合null) をパラメータに呼び出す。

OnNavigatedFrom
フレームに表示されなくなるときに呼び出される。
1)SaveState を 初期化された Dictionary<String, Object> をパラメータに呼び出す。
2)保存された状態のディクショナリに格納する。

LoadState / SaveState
protected virtual の実装になっているのでアプリケーションが中断後に終了しまた表示される場合に復元したいViewModelの情報を登録・復元する必要がある。

 

ディクショナリー型ビュー モデル

DefaultViewModel IObservableMap<String, Object>型の文字列とバインドするデータが組になった ViewModel である。 Dictionary に変更があったら MapChangedEventHandler<K, V> MapChanged イベントを発行する。INotifyPropertyChanged や INotifyCollectionChanged は発行しないのでバインドするデータ側で用意する必要がある。

 

次回は各 View の実装について解析する。

投稿日時 : 2013年1月12日 22:39

コメントを追加

# ブランド商店-賢者の買物 2019/09/25 2:06 MarquisTax

ブランド商店-賢者の買物


弊社は各ランクのブランド商品満載し、ブランド通販店で一番信用のある店なので!。
品質はこちらが間違いなく保証します。
相互信頼を旨(むね)として貿易関係を結びたいのですが。
今後ともよろしくご愛顧くださいますよう、お願い申し上げます
URL:
https://www.88kopi.com/product/product-2077.html

■取扱ブランド ルイ.ヴィトン、シャネル、クリスチャン ディオール、グッチ、コーチ、ROEXL 、S品、A品、超A品
■主要取扱商品 バッグ、財布、腕時計、靴、服、ベルト、ネクタイ、ライタ!
お取り引きを開始させていただきたく思います。
詳細に関してはどうぞお気軽にご連絡ください。
https://www.88kopi.com/product/product-7743.html

# 2 In our against Reason being, I 8 2019/12/31 21:17 Typicalcat07

https://yamasaki.pro/2019/10/04/%ef%bb%bfmost-visited-seniors-dating-online-service-no-subscription/ kansas jewish seniors singles dating online website http://teatrdroga.pl/cheapest-online-dating-sites-for-over-fifty-blogs.wankuma.com.pdf philadelphia albanian seniors dating online service

タイトル  
名前  
URL
コメント