Как использовать stringformat в multibinding в WPF XAML
Как вы знаете, StringFormat имеет большое значение для представления данных в WPF. Моя проблема заключается в том, как использовать StringFormat при многосвязности в WPF?
Если я приведу очень простой пример:
Имеются переменные A и B, значения которых 10.255555 и 25.6999999
И мы хотим показать им 10.2,25.6
?
Как я могу сделать это с помощью multibinding? Обычно это кусок пирога с ValueConverter
Любая помощь и идеи по этой теме будут очень оценены
Ответы
Ответ 1
Просто установите свойство StringFormat
на MultiBinding
; использовать заполнители ({0}, {1}...) для каждой привязки в многосвязном режиме и при необходимости включать спецификаторы формата (например, F1 для десятичного числа с 1 десятичной цифрой)
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:F1}{1:F1}">
<Binding Path="A" />
<Binding Path="B" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Часть {}
в начале - это строка формата - escape-последовательность (в противном случае анализатор XAML рассмотрит {
как начало расширения разметки)
Ответ 2
Для упрощения вы можете использовать два TextBlock/Labels для отображения значений.
Если вы используете .Net4, вы можете связать в элементе Run Inline TextBlock
<TextBlock>
<Run Text="{Binding A, StringFormat={}{0:F1}}"/>
<Run Text="{Binding B, StringFormat={}{0:F1}}"/>
</TextBlock>
Ответ 3
Если кто-то ищет "Форматы времени", это для 24-часовых часов, как я пришел к этому сообщению:
<TextBlock TextAlignment="Center">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:HH:mm} - {1:HH:mm}">
<Binding Path="StartTime" />
<Binding Path="EndTime" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Ведущие 0: и 1: являются ссылкой на привязки
[0: hh: mm tt] для отображения AM/PM