基本ページを追加するという技
VS2012では「基本ページを追加する」という技がある。小技かな。 新しいプロジェクト項目として[基本ページ]を追加する。このときにメッセージボックスが出てきて、「不足しているファイルを自動的に追加しますか?」と尋ねられるので[はい]と答えるとLayoutAwarePage.cppなどWindows Store App作成の手助けとなる下記ファイルが生成される。
- BindableBase.h/.cpp ... モデルを簡略化するためのINotifyPropertyChangedの実装
- BooleanNegationConverter.h/.cpp ... true を false に、および false を true に変換する値コンバーター
- BooleanToVisibilityConverter.h/.cpp ... true を Visibility::Visibleに、および false を Visibility::Collapsed に変換する値コンバーター
- LayoutAwarePage.h/.cpp ... ビューステートと表示状態のマップ・GoBack、GoForward、および GoHome イベント ハンドラー・ナビゲーション用のマウスおよびキーボードのショートカット・ナビゲーションの状態管理およびプロセス継続時間管理・既定のビュー モデルの提供
- RichTextColumns.h/.cpp ... RichTextBlockのラッパー。「一定の高さを超えたら、横に新しい段組みを作成して拡張するようなコントロール」(Link先より引用)
- SuspensionManager.h/.cpp ... アプリケーションのサスペンド状態管理の支援
- StandardStyles.xaml ... 既定スタイル集
上記追加項目はなんとなくわかるようなわからないような私なのだが、実はこのテクニックで私のプロジェクトに追加するとビジー状態となり、そのまま放っておいたら何かエラーを吐いて追加された。そのエラーはなんであったかは覚えていない。サンプルプロジェクトをベースにしているし、プロジェクトファイルも手動エディットしてしまっているし、おそらく言語ベースも異なるのでそのあたりで何かプロジェクトファイルにおかしなところがあるのであろう。まあしかしちゃんとコンパイルできるしアプリの実行もできたので何なのかいまだわかっていない。
それはさておき、何気にStandardStyles.xamlを見ると下記エラーが発生していた。
エラー 5 Failed to create a 'Windows.UI.Xaml.Controls.Primitives.PlacementMode' from the text 'マウス'. visual studio 2012\Projects\App1\App1\Common\StandardStyles.xaml 1754 5 App1
これはいったい何なのか。
このエラーの正体
実はこのエラー、新しくプロジェクトを作り直してみても発生する。どうやら私のヘンテコプロジェクトファイルが原因ではなさそうである。このエラーでググるとこちらに解決方法が載っていた。「マウス」を「Mouse」に変更すると直る。私のプロジェクトでも直った。どうもこれは自動生成されるファイルに問題があるらしい。
エラーで発生しているToolTipService.PlacementにはWindows::UI::Xaml::Controls::Primitives::PlacementMode列挙体の値を記述しなければならないとのこと。「Mouse」がデフォルト値なのだがその値を誤って翻訳してしまっているようだ。