日本語フォントは美しいYu Gothicなのに、WP7の仕様のために例え日本語ロケールでも中華フォントになってて悲しい思いをします。
その修正をするために、各PageのxamlのPage要素に「Language="ja-jp"」の属性をぶち込む作業は地道で仕方がないです。けど、多言語対応でもし中国語も対応したいというときに、中国人にとっても悲しい思いをすることになるでしょう。
日本語フォントが中華フォントにならないために - 古事連記帖
というエントリをしていたのにid:ch3cooh393が
これ、XAMLで書けない? RT @ChiiAyano: 書いてみた #wp7jp #wp7dev_jp / 日本語フォントが中華フォントにならないために - 古事連書帖 URL
こういうコメントしてたので、まぁ出来なくはないけど…という苦し紛れエントリ。
CultureInfoクラスは引数無しコンストラクタを持っていないのでXAMLからインスタンス化できない。なので、ResourcesにCultureInfoクラスを入れることが出来ない。仕方ないのでラッパークラスを書く…
public class CultureWrapper { // 本当はこうしたいけどStringからXmlLanguageへのコンバータを提供しないといけない //public CultureInfo CurrentCulture //{ // get { return CultureInfo.CurrentCulture; } //} // それはそれで面倒なのでこっちにしてみる public XmlLanguage CurrentLanguage { get { return XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.Name); } } }
これをApp.xaml.csの最後あたりに突っ込んでおいて、App.xamlに適当に…
<Application.Resources> <PhoneApp9:CultureWrapper x:Key="culture" /> </Application.Resources>
こんな感じで書いておけばあとはLanguageを設定したいPhoneApplicationPageのXamlに
<phone:PhoneApplicationPage Language="{Binding Source={StaticResource culture},Path=CurrentLanguage}" x:Class="PhoneApp9.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" (省略) />
とかするといいんじゃないでしょうか