0

float プロパティを TextBox コントロールにバインドしています。言語設定として「en」を使用している場合、それは正しく機能します。数値「1.123」を入力すると、正しく解析されます。

mur culture を "de" に切り替えても、TextBox (および TextBlocks) は何も変化しません。それでもすべてが「.」でフォーマットされています。

WinRT の「数値」キーボードを使用して数値を入力すると、区切り記号として「,」が使用されます。ただし、トレーニング ディジットは、フォーカスが失われた後は数値の一部にはなりません (そして、バインドされたプロパティが更新されます。したがって、「1,234」は内部で「1.234」として解析される必要があります。ただし、「1」に変換されます)。

app.xaml.cs には、カルチャが適切な言語に設定されるようにするための初期化がいくつか含まれています。許可されている言語は ("en" および "de" (*,proj ファイル) です。デバッガーに侵入すると、CultureInfo.CurrentCulture は正しく "de" に設定されます。

public App()
{
    Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride =     CultureInfo.CurrentCulture.Name;
    CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentCulture;
    CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CurrentCulture;
4

2 に答える 2

1

PrimaryLanguageOverrideコンストラクターで、DefaultThreadCurrentCulture、およびDefaultThreadCurrentUICultureを設定しApplicationても効果はありません。これらは新しいスレッドにのみ適用されるためです。ただし、メインの UI スレッドは既に作成されており、コンストラクターに入るまでにカルチャが設定されています。

既存の UI スレッドを強制的に変更するには、 CultureInfo.CurrentCultureThread.CurrentCultureに記載されているように設定する必要があります。ただし、WinRT はこのクラスをサポートしていません。Thread

これは、なぜ手作業による文化的変更が必要なのかという疑問につながります。アプリは、起動時または休止状態からの再開時に、ユーザーの Windows カルチャを自動的に取得する必要があります。

于 2012-08-10T13:54:54.170 に答える
0

使用できる InvariantCulture 設定を取得するには、

"ApplicationLanguages.PrimaryLanguageOverride = CultureInfo.InvariantCulture.TwoLetterISOLanguageName;"

これは私にとってはうまくいきました。

于 2013-05-29T06:35:03.610 に答える