Что такое связывание данных WPF XAML, эквивалентное String.Format?

31
задан Drew Noakes 15 January 2009 в 15:23
поделиться

5 ответов

Можно использовать MultiBinding + StringFormat (требует WPF 3.5 SP1):

<TextBox.Text>
    <MultiBinding StringFormat="{}{1:#0}% up, {2:#0}% down">
      <Binding Path="PercentageOne" />
      <Binding Path="PercentageTwo"/>
    </MultiBinding>
</TextBox.Text>

Относительно Выполнения. Текст - Вы не можете связать с ним, но существуют некоторые обходные решения:

45
ответ дан aku 16 January 2009 в 01:23
поделиться

Путем я решил, это в прошлом должно на самом деле повредить TextBlock, который Вы имеете в своем списке в несколько TextBlocks. Попробуйте что-то вроде этого:

<Element>
  <Element.Tooltip>
    <StackPanel Orientation="Horizontal">
      <TextBlock Text="{Binding Path=PercentageOne}"/>
      <TextBlock Text="% up, "/>
      <TextBlock Text="{Binding Path=PercentageTwo}"/>
      <TextBlock Text="% down"/>
    </StackPanel>
  </Element.Tooltip>
</Element>

Поочередно можно создать что-то как StringFormatConverter, который мог взять строку формата в качестве параметра и использовать MultiBinding для передачи ее параметры. См. эту ссылку для MultiBindings:

Информация о MultiBinding

И этот для получения информации о преобразователях:

Информация о Преобразователях

можно довольно легко вообразить преобразователь, который берет "объект [] значения" вместо "объектного значения", поскольку это - первый параметр и передает значения к функции Формата.

2
ответ дан Gabe 16 January 2009 в 01:23
поделиться

При использовании 3,5 SP1 ответ Aku является способом пойти. Если Вы не, можно использовать FormatConverter от моего библиотека WPF Converters.

3
ответ дан Tim Cooper 16 January 2009 в 01:23
поделиться

Насколько я знаю, WPF не делает то, что Вы хотите. У Вас действительно есть намного более мощное (хотя более включенным) решением.

Смотрят на интерфейс IValueConverter.

ссылка MSDN HowTo здесь

РЕДАКТИРОВАНИЕ

На основе ответа aku и Вашего утверждения, что Вы не можете использовать 3,5 SP1, вот альтернатива.

Смотрят на недавний ряд Phil Haack сообщений на строковом форматировании:

Создает ValueConverter, поскольку это берет формат в качестве свойства. Необходимо затем смочь связать объект данных и иметь его формат на основе определенного формата (использующий имя свойства вместо положения).

2
ответ дан Michael Meadows 16 January 2009 в 01:23
поделиться

Я бы разделил на несколько текстовых блоков, привязывая каждый к StringFormat = {0: P} в привязке как таковой:

<TextBox Text="{Binding Something, StringFormat=\{0:P\}}" />

См. Этот пост для примеры: Блог Лестера WPF на StringFormat

Checkout VS2010 - Привязка из свойств включает форматирование в параметрах.

11
ответ дан 27 November 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: