programing

WPF 문자열 형식={0:C} 달러로 표시

telebox 2023. 5. 7. 11:22
반응형

WPF 문자열 형식={0:C} 달러로 표시

이 줄 코드는 왜

<TextBlock Text="{Binding Net, StringFormat=c}"/>

모든 지역 설정이 영국으로 설정되면 결과를 $xx.xx로 출력합니다.저는 그것이 £xx.xx로 출력될 것으로 예상합니다.아이디어 있어요?StringFormat={}{0:를 포함하여 다양한 변형의 문자열 형식을 사용해 보았습니다.C} 하지만 여전히 같은 결과를 얻습니다.

찾아주셔서 감사합니다.

저는 이것이 수리되었는지 확실하지 않습니다.NET 4, 하지만 WPF는 화폐나 날짜와 같은 것을 렌더링할 때 현재의 문화를 배운 적이 없습니다.이것은 제가 큰 실수라고 생각하는 것이지만, 감사하게도 쉽게 고쳐졌습니다.

앱 클래스:

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

자세한 내용은 이 우수 게시물을 참조하십시오.

메인 창에서 Language="en-GB"를 수행합니다.

<Window x:Class="AllocateWPF.Vouchers"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Test" Height="692" Width="1000" Language="en-GB">

나에게 맞는 것:
app.xaml에서 OnStartup()을 재정의하고 -을 추가합니다.System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("et-EE");

XAML @ 창 레벨에서 정의 -xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib"

XAML에서 -<TextBox Text="{Binding Path=Price, StringFormat='{}{0:C}', ConverterCulture={x:Static sysglb:CultureInfo.CurrentUICulture}}" />

이렇게 하면 사용자 지정 국가별 설정이 올바르게 선택됩니다.첫 번째 단계에서 수동으로 생성된 CultureInfo를 사용하고 있지만, 정적 유형 중 하나인 예를 전달할 수 있다고 확신합니다.시스템.세계화.CultureInfo.Current Culture (테스트하지는 않았지만...)

언급URL : https://stackoverflow.com/questions/2764615/wpf-stringformat-0c-showing-as-dollars

반응형