специализированный StringFormat в WPF DataGrid

Каков был бы самый эффективный способ установить настроенное форматирование столбца в DataGrid? Я не могу использовать следующий StringFormat, поскольку мое сложное форматирование также зависит от некоторого другого свойства этого ViewModel. (например, у Price, форматирующего, есть некоторые сложная логика форматирования на основе различных рынков.)

Binding ="{Binding Price, StringFormat='{}{0:#,##0.0##}'}"
6
задан Boris Lipschitz 19 May 2010 в 01:31
поделиться

1 ответ

Вы можете использовать MultiBinding с конвертером. Сначала определите IMultiValueConverter, который форматирует первое значение, используя формат, указанный во втором:

public class FormatConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        // some error checking for values.Length etc
        return String.Format(values[1].ToString(), values[0]);
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Теперь привяжите и ваше свойство ViewModel, и формат к одному и тому же:

<MultiBinding Converter="{StaticResource formatter}">
    <Binding Path="Price" />
    <Binding Path="PriceFormat" />
</MultiBinding>

Приятная часть этого заключается в том, что логика того, как Price должна быть отформатированным, может жить в ViewModel и быть тестируемым. В противном случае вы можете переместить эту логику в преобразователь и передать любые другие необходимые свойства.

6
ответ дан 17 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

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