Унаследование от DataGridTextColumn и переоценка GenerateElement
-
22-10-2019 - |
Вопрос
Я пытаюсь создать пользовательский DataGrid, где я могу отформатировать отдельные ячейки на основе значения ячейки (т. Е.; Красный текст для отрицательных значений, зеленый для посттивного) ALA Этот подход ...
Как получить значение привязки текущей ячейки в DataGrid WPFToolkit
Мне также необходимо преобразовать значения из отрицательных в скобок (т. Е. -2,34 в (2.34)). У меня работает наследство/переоборудование. Мой вопрос: как получить доступ к значениям в ячейках в методе переопределенного генерирования.
Заранее спасибо, Фил
Решение
Мой подход был неправильным. Мне нужно было использовать IvalueConverter и связать текст и свойства переднего плана, как это ...
type FixedDecimalConverter() =
interface IValueConverter with
member this.Convert(value, targetType, parameter, culture) =
match value :?> Double with
| Globals.DataGridHelper.IsNegative x ->
sprintf "(%.2f%%)" (Math.Abs x) :> obj
| Globals.DataGridHelper.IsPositive x ->
sprintf "%.2f%%" x :> obj
member this.ConvertBack(value, targetType, parameter, culture) = raise <| NotImplementedException()
type ForegroundValueConverter() =
interface IValueConverter with
member this.Convert(value, targetType, parameter, culture) =
match value :?> Double with
| Globals.DataGridHelper.IsNegative x -> Globals.DataGridHelper.redBrush :> obj
| Globals.DataGridHelper.IsPositive x -> Globals.DataGridHelper.greenBrush :> obj
member this.ConvertBack(value, targetType, parameter, culture) = raise <| NotImplementedException()
И XAML ...
<data:DataGridTemplateColumn Header="YTD v. Sector" x:Name="YTDvSector" Visibility="Collapsed">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment="Right" VerticalAlignment="Center"
Text="{Binding ytdSectorReturn.value, Converter={StaticResource fcFixedDecimalConverter}}"
Foreground="{Binding ytdSectorReturn.value, Converter={StaticResource fcForegroundValueConverter}}"/>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
И сантехника ...
<UserControl.Resources>
<y:FixedDecimalConverter x:Key="fcFixedDecimalConverter" />
<y:ForegroundValueConverter x:Key="fcForegroundValueConverter" />
</UserControl.Resources>
Не связан с StackOverflow