Windows ストア アプリのタイポグラフィについて

Windows 8.1の Windows ストア アプリ開発では、合字が発生する場合があります。どのように対処するかは、高橋のBlogを参照して頂くとして、ここでは何で?なのかということを考えてみたいと思います。 確か、Visual Studio 2012までは特に問題を感じなかったのですが、これは StandardStyles.xamlというスタイル シートがプロジェクトに取り込まれていたお蔭とも考えられます。一方で、Visual Studio 2013は StandrdStyles.xamlが廃止されたことで、この問題が出てきました。Visual Studio で XAML 系のプロジェクトをビルドすると、「%WindowsSdkDir%\Include\winrt\xaml\design\generic.xaml」がリソースとしてアプリに取り込まれるようになっています。このリソース定義で、Typography.DiscretionaryLigaturesとTypography.StandardLigaturesの設定が各種のテキスト スタイルに指定されていることから、合字の問題が発生します。何故、標準が合字なのかという疑問を調べていくと、タイポグラフィのガイドラインという文書に行き当たります(日本語ドキュメントでは、タイポグラフィを文字体裁と訳しています)。このガイドラインに記述されている「優れた文字体裁を実現するための8つのヒント」の第1項に「OpenType機能をグローバルに適用する」があります。この記述の最初に 「推奨されるいずれかの UI フォントを使う場合、OpenType 機能のカーニング (kern)、随意の合字 (dlig)、Stylistic Set 20 (ss20) をすべてのテキストに適用します。」 とあります。つまり、UI フォントは合字、カーニングなどを適用することで優れたタイポグラフィが実現できるとと書かれているわけです。UI フォントを日本語の環境に置き換えると、メイリオ UI フォントになるわけで、メイリオ UI フォントの合字がこの問題に繋がっていることになるわけです。このガイドラインには、 「推奨されるフォントを使わない場合は、随意の合字を適用しないでください。」 とも記載されているので、推奨フォントを使用しない場合は合字を適用しないことを標準にしなさいと言っているわけです。つまり、推奨フォント以外は、テキスト スタイルを自分で定義して generic.xamlのスタイルを適用しないようにして下さいということになります。 これは UX ガイドラインをチェックしていて見つけましたが、色々なガイドラインがあるので是非、ご自分で確認してみてください。ちなみに、フォントに関係する UX ガイドラインを以下に記述しておきます。 タイポグラフィのガイドライン フォントのガイドライン Segoe UI Symbol アイコンのガイドライン

0

How to enable loopback for Windows Store Apps

Sorry, English later, First Japanese. Windows 8.1 の IE11 について 私の環境ですが、Windows 8.1 に IISを有効にした状態で、 IE 11(デスクトップIE と モダンアプリとしての IE11)で「127.0.0.1」というループバックにアクセスすると、このページは表示できませんとなってしまいます。 この問題を回避するには、[インターネット オプション]-[セキュリティ]-[信頼済みサイト]でサイトボタンをクリックして、127.0.0.1を信頼済みサイトに追加します。 これでブラウズすると、以下のように正常に表示されます。 Windows 8.1のIE11では、ループバックが制限されているのでご注意ください。 Windows ストア アプリについて Windows ストア アプリも、標準ではループバックとの通信も禁止されています。ストア アプリを開発される方の環境の場合は、Visual Studioがデバッグ環境においてループバックを使用するように設定しています。これは、[プロジェクト プロパティ]-[デバック]に設定があります。 ローカル ネットワークのループバックが有効になっていることで、デバッグ時は問題なくループバックを使った通信を行うことができます。デバッグ環境ではない時に、どのように調べて対応するかという情報は、「ループバックを有効にする方法とネットワーク分離のトラブルシューティングを行う方法」に記載されています。このドキュメントには、CheckNetIsolation.exeというユーティリティを使った確認と追加する方法が記述されています。CheckNetIsolation.exeユーティリティは、Windows 8/8.1ととも提供されていますので、開発ツールがなくても利用することができます。このツールの利用方法は、コマンドプロンプトを開いて以下のように利用します。 C:\Users\XXXX>CheckNetIsolation.exe LoopbackExempt -s リスト ループバックは AppContainer を除外しました [1] —————————————————————– 名前: bfe2a6a2-0cad-4251-87de-ac2f38f35ec4_ngfx0nz00mqn6 SID: S-1-15-2-1996650045-1801038662-1737393378-2727025871-1170270685-373450831-3470238151 [2] —————————————————————– 名前: app.abfb62353.ac3b8.a430f.ab2b0.ad9c3ace87830_8wekyb3d8bbwe SID: S-1-15-2-2918410053-2341293364-2429605485-2955997936-2162362100-2763491358-3224060108…

0

About Windows Store App with Leap Motion device

Sorry, English later, first Japanse. 私の友人でもある初音さんが、Leap Motion必須というWindows ストア アプリを公開してくれました。このアプリは、Leap Simon Saysというものです。更に初音さんが素晴らしいのは、Windows ストアの審査に通す過程を色々とまとめて下さっていることです。初音さんの許可を頂いているので、どうやったかを簡単に解説したいと思います。まとめて読みたい方は、Leap Motion必須のWindows ストア アプリが審査に通りましたというエントリーをお読みください。 Leap対応アプリで審査の壁が越えられない Leap Motion SDKが提供するLeap.dllやLeapCSharp.dllが、MSVCP100.DLL(Visual Studio 2010)に依存しているために、デバッグ環境で実行できても、WACKが失敗を返すというものです。この壁を完全にクリアーするには、Leap Motion SDKが Visual Studio 2013対応になるのを待たなければなりません。ですので、Leap MotionへWindows ストア アプリをサポートするようにリクエストを投げてみてください。 Leap対応アプリがWACKチェックをクリアして審査中 Leap Motion SDKが、HTMLアプリのために用意しているleap.jsがアクセスするWeb ServicesへプログラムからWebSocketを使用してアクセスするようにして、WACKにパスしたという話になります。まあ、Web Servicesが返すJSONに関してはleap.jsやデータをダンプして確認してから作成したということになります。 Leap対応アプリがWACKチェックをクリアして審査リジェクト 認定要件1.2、6.2、6.8を満たしていないという理由でリジェクトになりました。対応としては、アプリの説明にLeap Motionが必須であり、ループバックが必須と明記し、ループバックなので外部へアクセスしないことを明記し、アプリで英語表記も使っていることなどを明記して、もう一度申請したという流れになります。 Leap Motion必須のWindows ストア アプリが審査に通りました 結局は、年齢区分を12歳以上にして提出することでパスしました。 簡単にまとめると初音さんが行った方法は、以下の2種類に大別できます。最初に、開発時の対応は以下のことを実施しています。 Leap Motionとストア アプリの接続にWeb Servicesを利用した。 アプリが提供する情報として、Leap Motionが必須であることを明記。 また、ループバックを使用していることを情報として明記。 最後に、ループバックを使用するためのガイドを情報として明記。 プライバシーポリシーの設置。 次に申請時に以下の対応を実施しています。 アプリの説明欄に以下を明記。…

0

Windows.Web.Http.HttpClient クラスについて

Windows 8.1 の Windows Runtimeには、新しい HTTP スタックとして Windows.Web.Http 名前空間にHttpClient クラスが追加されています。この HttpClient クラスは、Windows 8.1 の新機能ガイドによれば コネクト スタンバイのリアルタイム通信で利用できるとの説明があります。しかし、使って見ると注意しないといけない点がありました。それは、GetStringAsyncメソッドの使い方です。以下に簡単なサンプルを示します。 async Task<string> GetContent(string url) { var uri = new Uri(url); var client = new HttpClient(); var data = await client.GetStringAsync(uri); return data } このGetContentメソッドで戻ってくる文字列ですが、httpヘッダーに「Content-Type: text/html;charset=utf-8」などの文字エンコーディングが指定されている時は期待した文字列が返ります。しかし、「Content-Type : text/xml」のようにcharset指定がないとASCII文字が返ってくるので、文字化けが発生したような状態になります。この問題を回避するには、サーバー側でhttpヘッダーにcharsetを返すようにするか、取得したデータから正しいエンコーディングで処理しないといけません。RSSなどのXMLで簡易的に対処するには、以下のようにします。 async Task<string> GetContent(string url) { var uri = new Uri(url); var client…

0

Windows 8 アプリの Windows 8.1 へのマイグレーションについて

Windows 8 のストア アプリのプロジェクトを Windows 8.1 用のプロジェクトへ移行する方法は、物江さんのBlogにまとまっていますので、私の方は変更された API に焦点を絞って解説します。Visual Studio 2013を使ってプロジェクトの再ターゲットを行うと、マイグレーションガイドのドキュメントのダイアログが表示されます。このドキュメントは、デベロッパーセンターでも公開されていて、このドキュメントが変更されたAPIのガイドにもなっています。残念ながら英語ドキュメントのままなので、再ターゲットを行われる場合は、一度は必ず目を通すようにしてください。プロジェクトを再ターゲットした後に行うべき作業は、大きくは3種類があります。 変更されたAPIに対する対応 新しいウィンドウ化モードへの対応(320ピクセルのスナップビューの廃止) 追加されたAPIやコントロールに対する対応の検討と実施 変更されたAPIに対応する作業において、XAML/C#、VB、C++ではVisual Studio 2013での支援機能があります。具体的には、ビルドすると変更されたAPIに対してワーニングを出力してくれます。Visual Studio 2013 RCで私が確認している限りは、完璧ではないようですが、かなりの作業で有効に機能しています。一方で、HTML/JavaScriptの場合は、このような支援機能がないのでマイグレーションガイドのドキュメントと照らし合わせて、作業を実施する必要があります。WinJSで、廃止予定のAPIを以下に記載します。 SettingsFlyout.width 新しいウィンドウ化モードに合わせて変更します ListLayout.backdropColor .win-backdrop {background-color:transparent;}へ置き換え ListLayout.disableBackdrop .win-backdrop {background-color:transparent;}へ置き換え GridLayout.backdropColor .win-backdrop {background-color: <color>;}へ置き換え GridLayout.disableBackdrop .win-backdrop {background-color:transparent;}へ置き換え GridLayout.maxRows .win-surface {height: 200px;}のようにheightを使用します。 GridLayout.groupInfo CellspanningLayout.groupInfo へ置き換え GridLayout.itemInfo CellspanningLayout.itemInfoへ置き換え ListView.loadingBehavior デザインに応じて対応します ListView.automaticallyLoadPages デザインに応じて対応します ListView.loadMorePages デザインに応じて対応します ListView.pagesToLoad デザインに応じて対応します ListView.pagesToLoadThreshold デザインに応じて対応します  …

0

Windows 8.1 のグリッド アプリケーションについて

Visual Studio 2013で提供する Windows ストア アプリ用のプロジェクトテンプレートには、次の4種類があります。 新しいアプリケーション グリッド アプリケーション ハブ アプリ 分割アプリケーション Visual Studio 2012のプロジェクトテンプレートと比較すると、ハブ アプリが新しく追加されています。ハブ アプリは、Windows 8.1 で追加された Hub コントロールを使用したアプリの作り方を示すものです。表面的には、グリッド アプリケーションと分割アプリケーションが提供する機能としては、スナップ時のレイアウトを別にすればVisual Studio 2012のものと同じと考えることができます。でも、内部的には、大きな変更がなされています。グリッド アプリケーションで作成されるページの構造を以下に示します(この構造は、ハブ アプリや分割アプリケーションでも同じです)。 クラス図では、Pageクラスの継承関係と相互作用だけに焦点を当てています。ObservalDictionaryはIObservableMap<string, object> を継承していますし、NavigationHelperはDependencyObjectを継承しています(クラス図では、ステレオタイプで表現しています)。各ページが、Pageクラスを継承しているので、Visual Studio 2012の時のようにビルドしなくてもVisual Studioのデザインビューを表示することができるようになっています。プロジェクトのCommonフォルダーに作成されているコードファイルは、次のようになります。 ファイル名 説 明 NavigationHelper.cs Visual Studio 2012のLayoutAwareクラスで定義されていた機能が含まれています。 ObservableCollection.cs Visual Studio 2012のLayoutAwareクラスのインナークラスとして定義されていたクラスです。 RelayCommand.cs 新しく追加されたコードで、XAMLのコマンドパターンで使用します。具体的には、戻るボタンで使用しています。 SuspensionManager.cs Visual Studio 2012 と同じものです。 最初にSuspensionManagerクラスは特に変更はありませんので、App.xaml.csのOnLaunchedイベントでRegisterFrameメソッドを使ってFrameオブジェクトのインスタンスを登録するのも同じです。RegisterFrameメソッドで登録しないと、ナビゲーション履歴やセッション情報が一時停止時に保存されませんのでご注意ください(言い換えれば、OnSuspendingイベントでSuspensionManagerのSaveAsyncメソッドを呼び出すということです)。 NavigationHelperクラスの使用方法 次に各ページで、NavigationHelperクラスをどのように使用しているかを説明します。ちなみに、NavigationHelperの先頭にコメントで、使用方法が記述されています。 フィールド定義 navigationHelper…

0

執筆協力した書籍について

色々と忙しかった理由ですが、一番は書籍の執筆協力でした。具体的には、プログラミング Windows 第6版 と プログラミング .NET Framework 第4版に対して、Windows 8.1(.NET Framework 4.5.1)との差異を埋めるべく、作業をしていました。 プログラミングWindowsでは、日本語版だけの特典としてWindows 8.1 / Visual Studio 2013 ベースのサンプルコードも用意しています。下巻が発売されるのに合わせて、日経BPさんのサイトからダウンロードできるようになる予定です。 プログラミング .NET Framework(原書では、CLR via C#)は、CLRなどを知りたい場合の定番ともいえる書籍です。現在は予約中ですが、まもなく発売される予定です。この書籍の執筆協力の依頼があったのが、6月の中旬でそれから訳3000ページを精査しながら、Windows 8.1との差分を脚注として起こしたり、追加原稿を起こしたりしていました。 また、HTML/JavaScriptでWindows ストア アプリを開発する場合に有益となるプログラミングWindowsストアアプリも絶賛発売中です。 この書籍は、マイクロソフト本社のプログラム マネージャが執筆した書籍の翻訳となります。この書籍も、お勧めの一冊となりますので、宜しければ書店で是非とも手に取ってください。

0

グリッド アプリケーションの解説ドキュメント

Blogの更新もままならない状態でしたが、何とか更新していこうと考えています。もうじき、Windows 8.1 が一般公開される時点で何なんですが、Windows 8 のストア アプリのグリッド アプリケーション テンプレートのドキュメントを公開します。このドキュメントは、様々な理由があって作ったものの日の目を見ない状態になっていたものです。 Visual Studioが提供するプロジェクト テンプレートに賛否があるのは知っていますが、用意されているテンプレートの仕組みを知っておくことは有益だと私は考えています。テンプレートで提供されるSuspensionManagerクラスなどは、Visual Studio 2013でも利用されていますし、異なるのはLayoutAwareクラスが無くなってNavigationHelperクラスになったことが大きなポイントだと思います。でも、NavigationHelperクラスに記述されているロジックの大半は、LayoutAwareクラスと同じですから、この意味でもVisual Studio 2012のグリッド アプリケーションの構造を知っておくことは役に立つはずです。このように考えていますので、このエントリーにドキュメントを添付します。 Grid Application Template.pdf

0

Winodwsストア アプリ開発者契約について

色々とお問い合わせを頂くことが多いので、Windows ストア アプリを公開する場合の注意事項を個人的な見解として記述します。最初に、Windows ストアに対して開発者アカウントを作成する場合に表示される、アプリ開発者契約を必ず読んでから登録作業を進めることをお願いします。アプリ開発者契約には、とても重要な内容が記述されています。幾つかを例として、以下に記載します。 「1) Windows ストア アカウント」では、Windows ストア開発者アカウントを開設する必要があること、料金を支払う必要性があること、ストア アカウントを通して行う活動にはお客様が責任を持つこと、契約に違反した場合はストア アカウントを停止することがあることなどが記載されています。 「5) アプリの価格、支払い、取引、および税。」では、c.支払条件で月額$200以上の売り上げがあった場合に支払いが行われることが記載されています。 「7)機密保持」では、本契約を通して得た機密情報を契約完了から5年間は開示を行わないことが記載されています。 「9) 免責、責任の制限、および要求に対する防御。」では、特にa.保障の免責にご注意下さい。この条項には、「Windows ストアおよびダッシュボードを、「現状有姿」、「無保証」、かつ「現状渡し」で提供するものであり、Windows ストアおよび開発者ポータルの使用に関する危険はお客様が負担するものとします。」と記載されています。つまり、ダッシュボードでアプリを提出した後に表示されている、前処理、セキュリティ・コンプライアンスなどの作業に関する時間は目安であって、SLAで保障しているものではないということになります。 また免責の「b.責任の制限」では、「直接損害を被った場合に限り、Microsoft またはその関連会社から最大でもアカウント料金と同等の金額 (アカウント料金が無料の場合は 1 ドル) の補償を受けることができます。 お客様は、派生的損害、逸失利益、特別損害、間接損害、懲罰的損害、および付随的損害を含むがこれらに限定されない、その他のいかなる損失や損害の補償を求めず、その権利を放棄することに同意するものとします。」と記載されており、直接損害に関してはアカウント料金と同等の金額の補償を行い、それ以外の損害に関しては補償を求めないで、その権利を放棄することになります。 「10) 期間および契約の終了。」では、b.アプリの保持に記載されているように、契約が終了したり、アプリを削除しても、提出されたアプリを利用しているユーザーのために保持することが記載されています。 アプリ開発者契約に記載されているように、Windowsストアとダッシュボードは現状渡しで提供されているので、サービス・レベル・アグリーメント(SLA)のようなものが何も無いことに同意した上で、開発者アカウントを登録していることになります。もちろん、審査状況であるとか、ダッシュボードの健全性を示す何らかの伝達手段があればと私は考えておりますが、現時点では何も無いという状態になっています。この点を、理解してくださるようにお願いします。 たとえばですが、AndroidのGoogle PlayではGoogle Play Developer Program Policies とDeveloper Distribution Agreement が該当すると考えていますが、現状渡し(AS IS)であるという点においては同じです。異なるのは、機密保持の条項がない点でしょうか。後は、Appleさんの契約であるREGISTERED APPLE DEVELOPER AGREEMENTですが、こちらも基本的に現状渡し(AS IS)であり、Windowsストアと同じように機密保持の条項も記載されています。従って、Microsoft、Google、Appleの契約においては、大差がないというのが私の認識となります。 次にアカウント料金に関する私の個人的な考えを示します。Windows ストア アプリは、Appxというパッケージ形式での配布が条件になっており、Appxはコード・サイニングが必須となっています。つまり、コード署名用の証明書が必須だということです。Windowsストアでは、提出されたアプリが認定された後に、公開準備作業があり、この作業を通して登録された開発者アカウントを発行者とした証明書を使ってAppxに対する署名作業が行われます。この時に使用した証明書は、Windowsストア側で管理しており、開発者へお渡しすることはありません。つまり、Windowsストアそのものにセキュリティ事故が発生しない限り、証明書の漏洩が起こらないようになっています。もちろん、簡単に漏洩しないように、厳密な管理配下で証明書を管理していることは言うまでもありません。また、証明書を管理していることから、有効期限の管理も行っています。証明書の再発行をスムーズに行うのが、開発者アカウントの自動更新の設定になります。開発者アカウントの自動更新を設定しておくことで、証明書のアイデンティティの一意性が保たれることになるわけです。このように私は考えていますので、現在の料金体系はコード・サイニング用の証明書を取得することを考えると、非常に安価であると考えています。高価であると考えている方がいらっしゃるのであれば、コード・サイニングの証明書の価格と有効期間を調べてみて下さい。 それでは、Windowsストアのダッシュボードの状況に関して不満を持ったらどうしたら良いのかという場合に関して説明します。この場合は、必ずサポートへ連絡フォームを使ってコンタクトを取ります。サポート・ページには、技術サポートと開発者アカウント サポートの2種類があります。審査結果に関する対応だったり、審査基準に対する疑問などは、開発者アカウント サポート技術サポートへ連絡する必要があります。技術サポートは、機能をどのように実装したら良いかなどについて問い合わせを行いますが有料となります。ストアの開発者アカウントをお持ちの場合は2回/年のテクニカル・サポート・インシデントを持っていますので、このインシデントを使って技術サポートを受けることができます。では、3回目の技術サポートが必要になったとしたら、どうしたら良いかと言えば、技術サポートを必要であれば有料でサポートを依頼することになります。 一方の開発者アカウント サポートでは、開発者アカウントの作成に伴う質問であったり、アプリの販売やアプリの削除などの主にダッシュボード上における操作や事務手続きを依頼することができます。仮に、審査状況であったり審査内容に関する質問を行ったとしても、サポート対象範囲外であることから、仮に受け付けて貰えたりしたとしても、求める回答が得られるわけではないことに注意して下さい(赤字と取り消し線が訂正と追記です)。 サポートに関して追記します 問題のタイプを選択します。 赤枠で囲った個所の中から、「アプリの送信と認定」を選択すると次のようなカテゴリーを選択するようになります。 赤枠で囲っているのは、Rejectされたしまったアプリに関する質問事項です。これらを選択して、問い合わせ内容を入力して問い合わせを行うようになります。…

0

GridViewのアイテム・コンテナーをカスタマイズするには

XAML(C#やVB)で作成するWindowsストア アプリで良く使うであろうコントロールとして、GridViewやListViewコントロールがあります。Visual Studioに組み込まれてプロジェクト・テンプレートであるグリッド・アプリケーションでもこれらのコントロールを使用しています。これらのコントロールのメリットは、コレクションのデータをItemSourceとしてデータ・バインドできることです。しかし、デザインの一環で配色などを独自のものに設定していくと、GridViewコントロールが持つアイテムに対する標準の配色(青系)を変更したいことが良くあります。このような場合の方法としては、GridViewコントロールのアイテム・コンテナーをカスタマイズする必要があります。今回は、アイテム・コンテナーのカスタマイズ方法を説明します。 最初に、Visual Studioでストア・アプリのグリッド・アプリケーションを選択して作成したプロジェクトを用意します。そして、GroupdItemsPage.xamlをデザイナーで開きます。次に、GridViewを選択してから、コンテキストメニューを表示して、[追加テンプレートの編集]-[生成されたアイテム コンテナーの編集]-[コピーして編集]を選択します(コピー済みであれば、現在の編集を選択します)。   そうすると、アイテム・コンテナーをコピーするダイアログが表示されます。[このドキュメント]を選択して、何らかの名前を指定してOKボタンをクリックします(Visual StudioやBlendでビジュアルにコンテナーを編集するには、[このドキュメント]を選択するのがポイントになります。アプリケーションなどを選択すると、ビジュアルな編集を行うことはできません)。 こうすることで、アイテム・コンテナーの編集画面がデザイナーに表示されます。 ドキュメント・アウトラインから、OuterContainer\ReorderHintContent\ContentContainer\InnerDragContent\SelectionBackgroundを選択して、プロパティ・ウィンドウでFillプロパティ(ブラシ)の色を変更します。こうすることで、選択されたアイテムの背景色をカスタマイズすることができます。 次に、ドキュメント・アウトラインから、OuterContainer\ReorderHintContent\ContentContainer\InnerDragContent\SelectedBorderを選択して、Strokeプロパティ(ブラシ)の色を変更します。これで、選択したアイテムの外周に表示される線の色を変更することができます。 次に、ドキュメント・アウトラインから、OuterContainer\ReorderHintContent\ContentContainer\InnerDragContent\SelectedCheckMarkOuter\SelectedEarmarkを選択して、Fillプロパティの色を変更します。これで、スワイプなどで選択した時の外周のに表示される線の色を変更することができます。 今度は、OuterContainer\ReorderHintContent\ContentContainer\InnerDragContent\SelectedCheckMarkOuter\Pathを選択して、Strokeプロパティの色を変更します。これで、スワイプなどで選択した時に表示されるチェックマークの色を変更することができます。 SelectedCheckMarkOuterとは、スワイプなどで選択した時に表示される外周などを定義しているGridとなっていますから、SelectedEarmarkとPathは同じ色にした方が良いでしょう。仮に、PathのDataを変更すればチェックマークの図形を変更することもできます。それでは、実行結果を以下に示します。 この実行結果は、上記の変更だけでなくFocusVisualの変更も行っていますので、フォーカスが当たっているアイテムの外周が赤くなっています。また、SelectionBackgroundを変更していますが、画像が表示されていることによってSelectionBackgroundを変更した効果を確認できなくなっています。この点を解消するには、アイテム・テンプレートの画像定義のOpacityを変更するか、イメージを削除します。また、GridViewのIsSwipとSelectionModeを変更していることは言うまでもありません(変更しないとスワイプが使用できないからです)。 この例のコンテナーがどのような構造になっているかを、次に示します。 このコンテナーの構造に伴って、変更する可能性のある要素を次に示しておきます。 要素名 説明 PointerOverBorder マウス・ポインターが入った時に表示する枠線 FocusVisual フォーカスが入った時に表示する枠線 SelectionBackground 選択された時に表示する背景色 SelectedBorder 選択された時に表示する枠線 SelectedCheckMarkOuter 選択された時に表示するチェックマークと枠線 説明した手順を利用することで、標準で提供しているコントロールのスタイルをカスタマイズすることに応用することができます。今回は、アイテム・コンテナー(アイテムが表示される領域)ですが、個々のアイテムをカスタマイズするのであれば「生成されたアイテムの編集」を行えば良いわけです。

0