Как использовать stringformat в multibinding в WPF XAML
Как вы знаете, StringFormat имеет большое значение для представления данных в WPF. Моя проблема заключается в том, как использовать StringFormat, когда multibinding в WPF?
Если я приведу очень простой пример:
У нас есть переменные A и B, значения которых равны 10.255555 и 25.6999999
И мы хотим показать им 10.2,25.6
?
Как я могу сделать это с помощью мультисвязи? Обычно это кусок пирога с ValueConverter
Любая помощь и идеи по этой теме будут очень полезны. оценил
3 ответа:
Просто установите свойство
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 рассматривал бы{
как начало расширения разметки)
Для упрощения можно использовать два текстовых блока/метки для отображения значений.
Если вы используете .Net4, вы можете привязать в Run встроенный элемент TextBlock
<TextBlock> <Run Text="{Binding A, StringFormat={}{0:F1}}"/> <Run Text="{Binding B, StringFormat={}{0:F1}}"/> </TextBlock>
Если кто-то ищет "форматы времени", это для 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