kazuk は null に触れてしまった

C# / .NET 系技術ネタ縛りでお送りしております

Metro アプリケーションテンプレートを読み解く 「新しいアプリケーション」プロジェクトテンプレート


続いて「新しいアプリケーション」のプロジェクトテンプレートを読み解いていきましょう。

image

プロジェクトテンプレートから作成した状態で以下の通りのアプリケーションが作られます。

image

Common 配下は前回の Grid アプリケーションと一緒の気がしますね、クラスライブラリとして共有してしまえば一つ育てれば全部育つという読みは正しい気がします。

DataModel ディレクトリ自体が消えてなくなっていますが BindableBase.cs はあるわけで、好きにモデル作れって事でなくGridテンプレートでの SampleDataSource.cs は実装サンプルとしては重要です。

App.xaml / App.xaml.cs も内容に変化は有りません。

BlankPage.xaml は当然に表示する物が無いのでえらくシンプルになっていて、BlankPage.xaml.cs はLayoutAwarePage の継承ではなくなっています。どうなんでしょう、此処をLayoutAwarePage の派生にしない理由が良く解りません。

xaml 定義をPage から Common のLayoutAwarePage にするには以下、xaml.cs 側のベースクラス変更も行えば普通に動きますので基本としてやっとく方が良いんじゃないでしょうか、DataContext が基本としてDefaultViewModelで見えて ObservableDictionary になっている方が何かとコードも共通化しやすいし。

<common:LayoutAwarePage
    x:Class="FirstPlainApplication1.BlankPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:FirstPlainApplication1"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:common="using:FirstPlainApplication1.Common"
    mc:Ignorable="d">

xmlns:common での記述内容はアプリケーションの名前空間の影響を受けますが、Commonをクラスライブラリにしてしまいそれを参照すれば固定される様になりますね。

実際プロジェクトへの項目の追加で基本ページを追加すると LayoutAwarePage の派生が作られます。

image

<common:LayoutAwarePage
    x:Name="pageRoot"
    x:Class="FirstPlainApplication1.BasicPage1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:FirstPlainApplication1"
    xmlns:common="using:FirstPlainApplication1.Common"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

Common をクラスライブラリとして切り離すのはここでちょっと待ったがかかりますね、項目テンプレートとか全部置き換えないといけませんので。まぁ、プロジェクトテンプレート全体を自作するつもりになればたいした話ではないのですが。その気になった人は以下のフォルダの zip を色々いじってみれば良いんじゃないかな。(デフォルトのインストールの場合)

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\VSWinExpress\ProjectTemplates\CSharp\Windows Metro style\1041

image

プロジェクトテンプレートや項目テンプレートをいじるのが新規環境に対して道具を研ぎあげるという感じの自分なので自分はきっとやりますけどね。

んで、このテンプレートそのものでは LayoutAwarePage も BindableBase も使われていませんので Common をぶちっと削除する事ができます。最少のテンプレートを目指す人はそれも良いでしょう。

使われている要素が少ないのでちょっとした事を試すには良いですが、項目テンプレートで使われている何かをサポートする為の余計なファイルが多いので初心者が道に迷う可能性多々ありな気もしないでもないです。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。