Один из подходов, который я бы выбрал, - это сделать конвертер. Я сделал вам одну, чтобы передать идею, но вам, вероятно, следует изменить ее в соответствии с вашими потребностями.
public class CellUnitConverter : MarkupExtension, IValueConverter
{
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
public string Unit { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
//Checks both if the value is null or if the converter somehow gets used ahead of time
if (value == null || value == DependencyProperty.UnsetValue)
{
return string.Empty;
}
// You can place some rounding rules here
return $"{value} {Unit}";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
Поскольку он использует MarkupExtension
, вы можете просто поместить его в привязку ячейки
Binding="{Binding Results, Converter={converters:CellUnitConverter Unit=CFM}}"
Однако, если вам нужны разные единицы в зависимости от значения, вы также можете связать единицу с другим свойством, таким как каждый элемент.
Давайте вам покажем коллекцию DataItem
, где у каждого есть Title
, Result
, Unit
. Затем вы связываете один столбец с Title
, а другой - с Result
, например
Binding="{Binding Result, Converter={converters:CellUnitConverter Unit={Binding Unit}}}"
Надеюсь, это указывает на решение.