Binding StringFormat - PullRequest
       14

Binding StringFormat

13 голосов
/ 25 октября 2010

У меня есть коллекция текстовых блоков, которые я собираюсь показать, и мне нужно, чтобы текст каждого текстового блока отображался по-разному.В настоящее время я сохраняю строку формата в свойстве тега, и мне нужно отобразить текст в этом формате.Как связать раздел StringFormat?

Что-то вроде раздела ниже:

<TextBlock Tag="{Binding MyFormatString}" Text="{Binding MyProperty, StringFormat='{}{0:MyTag}'}" />

Ответы [ 3 ]

21 голосов
/ 25 октября 2010

Поскольку BindingBase.StringFormat не является свойством зависимости, я не думаю, что вы можете связать его.Если строка форматирования меняется, я боюсь, вам придется прибегнуть к чему-то вроде этого

<TextBlock Text="{Binding MyFormattedProperty}" />

и выполнить форматирование в вашей модели представления.В качестве альтернативы вы можете использовать MultiBinding и конвертер (пример кода не проверен):

<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource myStringFormatter}">
            <Binding Path="MyProperty" />
            <Binding Path="MyFormatString" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

public class StringFormatter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        return string.Format((string)values[1], values[0]);
    }
    ...
}
1 голос
/ 23 августа 2017
<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0},{1}">
            <Binding Path="MyProperty" />
            <Binding Path="MyFormatString" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>
0 голосов
/ 25 октября 2010

Форматирование строки - это параметр отображения, и поэтому оно должно располагаться близко к слою пользовательского интерфейса, вы можете объявить его в Xaml или иметь свойства форматированной строки в ViewModel и выполнить форматирование в Get этих свойств и связать TextBlock. ему свойства ViewModel. Он получит свои данные из исходного источника данных.

...