c # wpf bind binding.stringformat [duplicate]

Многие, если не все, другие ответы здесь подходят для небольших наборов данных. Для масштабирования требуется больше внимания. См. здесь .

В нем обсуждается несколько более быстрых способов делать групповые макс и верхние N на группу.

12
задан Miles 24 October 2010 в 23:17
поделиться

3 ответа

Поскольку 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]);
    }
    ...
}
19
ответ дан Heinzi 25 August 2018 в 10:11
поделиться

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

0
ответ дан benPearce 25 August 2018 в 10:11
поделиться
<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0},{1}">
            <Binding Path="MyProperty" />
            <Binding Path="MyFormatString" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>
1
ответ дан user8504540 25 August 2018 в 10:11
поделиться
Другие вопросы по тегам:

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