Заполнение числового дисплея в WPF - PullRequest
1 голос
/ 05 января 2011

У меня есть считывание позиции, которое очень просто - это просто TextBlock с примененным к нему стилем. В этом стиле я просто установил его так (свойств больше, чем это, но я взял их для краткости):

    <Style x:Key="NumberStyle" TargetType="{x:Type TextBlock}">
        <Setter Property="TextAlignment" Value="Center" />
    </Style>

Теперь у меня есть один дисплей, который использует этот стиль, и он будет отображать число от 0,0 до 30000,0. Проблема в том, что, поскольку я центрирую текст, число (если оно быстро меняется) повсюду скачет, и это немного беспокоит. Я бы хотел отформатировать свою строку, чтобы она этого не делала.

Я пробовал этот параметр ConverterParameter в XAML:

ConverterParameter='\{0:00000.0\}'

и пока он выполняет заполнение должным образом, я получу числа типа 00032.5. Затем я заменил 0 на #, но в итоге он ведет себя так же, как {0:0.0}. Я посмотрел на документы MSDN и не увидел ничего другого, что могло бы помочь.

Единственное, что я могу придумать, - это то, что мне нужно написать новый IValueConverter для этого. Другими словами, в методе Convert () мне нужно было бы взять parameter и проанализировать его для моего собственного специального символа. И затем, когда я обнаружу это, замените пропущенные числа пробелами.

Однако, что я действительно пытаюсь выучить здесь, это можно сделать, просто используя другой символ в строке формата, о которой я не знаю?

Ответы [ 2 ]

3 голосов
/ 05 января 2011

Я думаю, вам нужно что-то вроде {0,7} (отобразить аргумент в семи позициях, добавив пробелы влево).Однако даже в этом случае, чтобы текст не перескочил, вам нужно использовать моноширинный шрифт или, по крайней мере, шрифт, ширина символа пробела которого равна ширине цифр.

1 голос
/ 05 января 2011

Попробуйте {}{0,10:#,0} для поля из 10 символов.

Обратите внимание, однако, что это даст странные результаты, если шрифт не имеет фиксированной ширины.Я попробовал это в Kaxaml , и это работает, но текст не совпадает с пропорциональным шрифтом.

...