2017-11-20 12 views
0

내가 내 WPF 응용 프로그램에 대한 문화 정보를 설정하기 위해 노력하고있어 (필요한 모든 .NET에서 작동 4.0 및 최신을 프레임 워크)와 내가 좋아하는 몇 가지 예, 발견했습니다 :이 같은WPF 앱에서 문화 정보 설정을 변경하거나 설정해야하는 이유는 무엇입니까?

CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US"); 
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US"); 

그리고 뭔가를 :

protected override void OnStartup(StartupEventArgs e) 

      { 

        Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); ; 

        Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); ; 



        FrameworkElement.LanguageProperty.OverrideMetadata(

        typeof(FrameworkElement), 

        new FrameworkPropertyMetadata(

          XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 



        base.OnStartup(e); 

      } 

이것을 달성하는 올바른 방법은 무엇입니까? 그리고 어디에서 설정해야합니까? 윈도우가 열리거나로드 될 때마다 설정하는 것이 좋지 않습니까?

+0

Main() 메서드와 문화권의 출력을 생성하는 모든 스레드가 시작될 때 (none 일 수도 있음). .Net 4.6 이상에서는 main 메소드에서만 설정해야하지만 .net 4.0을 사용 중입니다. –

+0

어디서? App.xaml.cs의 OnStartup 메소드는 어떻습니까? – mm8

+0

[WPF 앱에서 전역으로 문화권 설정 (en-IN)] 가능한 복제본 (https://stackoverflow.com/questions/7454024/setting-culture-en-in-globally-in-wpf-app) – Sinatr

답변

0

어디서 설정해야합니까?

그냥 자동 생성 App.xaml.cs 파일을 열고 OnStartup 메소드를 오버라이드 (override) :

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); ; 
     Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); ; 

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

이 방법은 한 번 응용 프로그램이 시작될 때 호출된다.

+0

이것을 적용하면 계산에 숫자를 사용하면 응용 프로그램에서 올바른 문화권에 100.56이 10056이됩니까? 사용자가 10000을 입력하여 10.000으로 표시하면 설정하고자하는 바입니다. –

+0

새 질문을하고 문제가있는 경우 예제를 제공하십시오. – mm8