0

Prism4.0を使用して作成されたアプリケーションがあります。ViewModelプロパティにバインドするさまざまなコントロールを持つビューがたくさんあります(アプリにモデルがありません)。これらのコントロールの一部は、日時と10進値を視覚化します。文字列表現の形式が正しい場所もあれば、そうでない場所もあります。しかし、これらの10進数と日時のプロパティを文字列プロパティとして表し、基になる値に対してToString()メソッドを呼び出すと、それらの形式は正しくなります。したがって、ViewModelスレッドのCurrentThread.CurrentCultureは正しいです。しかし、データバインダーやPrismなどのコードが日時と小数の値を文字列に変換するスレッドカルチャは正しくないようです。あるいは、現在のカルチャをまったく使用していない可能性があります。私のデバッグスキルは、カーテンの後ろに行くにはまだ十分ではありません、

    [Native to Managed Transition]  
    PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.GetValue(object item, int level)  
    PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue(int k)   
    PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue()    
    PresentationFramework.dll!MS.Internal.Data.ClrBindingWorker.RawValue()  
    PresentationFramework.dll!System.Windows.Data.BindingExpression.TransferValue(object newValue, bool isASubPropertyChange)   
    PresentationFramework.dll!System.Windows.Data.BindingExpression.ScheduleTransfer(bool isASubPropertyChange) 
    PresentationFramework.dll!MS.Internal.Data.ClrBindingWorker.NewValueAvailable(bool dependencySourcesChanged, bool initialValue, bool isASubPropertyChange)  
    PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.UpdateSourceValueState(int k, System.ComponentModel.ICollectionView collectionView, object newValue, bool isASubPropertyChange)   
    PresentationFramework.dll!MS.Internal.Data.ClrBindingWorker.OnSourcePropertyChanged(object o, string propName)  

WPFとPrismに正しい数値と日時形式をどこでも使用するように強制する方法はありますか?

4

1 に答える 1

0

スタートアップコードに次のコード行を配置すると、問題が解決する場合があります。

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));  

これにより、すべてのWPFコントロールのLanguagePropertyが現在のカルチャに設定されます。

于 2012-02-03T12:39:05.357 に答える