Отображение числа c в текстовом блоке с использованием текущего десятичного разделителя ОС - PullRequest
0 голосов
/ 05 февраля 2020

Я думаю, что это супер базовый c вопрос, но я не могу его запустить. Я хочу показать фиксированный номер в моем WPF View без привязки. Это число равно 0,001 или по-немецки 0,001. Смотрите разделитель. Теперь, если я переключаю язык пользовательского интерфейса, разделитель чисел должен быть обновлен до правильного языка.

<TextBlock>
    <Run Text="0.001" />
    <Run Text=" " />
    ...
</TextBlock>

Это должно быть очень тривиально, и я думаю, что StringFormat должен соответствовать потребностям, но, как я уже сказал, Я не могу заставить это работать. Спасибо за вашу помощь

Решение: Спасибо @Corentin Pane, которая подсказала мне решение. По его словам, мне нужно объявить значение

<TextBlock>
    <TextBlock.Resources>
        <system:Double x:Key="MinValue">0.001</system:Double>
    </TextBlock.Resources>

    <Run Text="{Binding Source={StaticResource MinValue}, Mode=OneTime, StringFormat='N3', ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}" />
    <Run Text=" " />
    ...
</TextBlock>

1 Ответ

1 голос
/ 05 февраля 2020

Если вы хотите, чтобы WPF правильно форматировал ваш номер, это должно быть число с самого начала (например, double), а не жестко закодированная строка, такая как "0.001". Вы можете использовать привязку к ресурсу stati c:

<TextBlock>
    <TextBlock.Resources>
        <system:Double x:Key="myFixedValue">0.001</system:Double>
    </TextBlock.Resources>
    <TextBlock.Text>
        <Binding Source="{StaticResource myFixedValue}"/>
    </TextBlock.Text>
</TextBlock>

со следующим пространством имен:

xmlns:system="clr-namespace:System;assembly=mscorlib"

Теперь вы можете позаботиться о форматировании , и, как указано в комментарии, этот поток предоставляет некоторые советы. Например, вы можете изменить Binding на:

<Binding Source="{StaticResource myFixedValue}"
         StringFormat="f"
         ConverterCulture="{x:Static gl:CultureInfo.CurrentCulture}"/>

и добавить объявление

xmlns:gl="clr-namespace:System.Globalization;assembly=mscorlib"

.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...