[Windows ストア アプリ] 8 と 8.1 のプロジェクトで、 できるだけたくさんのソース ファイルを共用してみる #win8dev_jp
前の記事で、8 から 8.1 に 「再ターゲット」 (retarget) してもソース コードは変化しないと分かりました。
となれば、 共通の DLL に置いたり、 ソース コードを共用するにしてもプロジェクト間でリンクしたりして、 できるだけファイルの重複は避けたいものです。
とはいうものの、 Win8.1 用の Windows ストア アプリでは、 最低限でも、 ビュー幅の変更に対応しなければなりません。
※ @IT の記事 「大きく変わるWindowsストア・アプリ開発 ~ ビュー状態に関連する変更点 (3/6)」 参照
Win8用の Windows ストア アプリは、 4つの VisualState (Landscape, Filled, Snapped, FullScreenPortrait) に対応した画面レイアウトを持っています。 それを Win8.1用に変換したプロジェクトでは、 たとえば次のような場合に画面レイアウトをデフォルト動作から変更したくなります。
- 横置きで、 Snapped (幅 320px) より広く Filled (幅 1024px) より狭いとき ⇒ 思い通りに Snapped か Filled にしたい
- 横置きで画面の高さが 1024px 未満なのに、 縦長のビューのとき ⇒ FullScreenPortrait にはしたくない
そのためには、 LayoutAwarePage クラスの DetermineVisualState メソッドをオーバーライドして、 適切な VisualState を返してやればよいのです。
…よいのですが、 しかし DetermineVisualState メソッドの中では、 新しいビュー サイズが分かりません。 このメソッドを実行している時点では、 まだビューのサイズは変更されておらず、 元のままなのです。 古い情報に基づいて VisualState を算出しても、 おかしな動作をするだけです (1ステップ遅れて画面レイアウトが切り替わる)。
| 固定リンク
| コメント (0)
| トラックバック (0)