Pregunta

Estoy intentando crear una datagrida personalizada donde pueda formatear celdas individuales basadas en el valor de la celda (es decir, texto rojo para valores negativos, verde para positivo) Ala Este enfoque ...

Cómo obtener el valor vinculante de la celda actual en un DataGrid WPFTOOLKIT

También necesito convertir los valores de negativos a parentados (es decir; -2.34 a (2.34)). Tengo la herencia/Overide funcionando. Mi pregunta es, ¿cómo obtengo acceso a los valores en las celdas en el método de generación anulada?

Gracias de antemano, Phil

¿Fue útil?

Solución

Mi enfoque estaba mal. Necesitaba usar ivalueconverter y unir el texto y las propiedades de primer plano como ...

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()

Y el 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>

Y la fontanería ...

<UserControl.Resources>
        <y:FixedDecimalConverter x:Key="fcFixedDecimalConverter" />
        <y:ForegroundValueConverter x:Key="fcForegroundValueConverter" />
    </UserControl.Resources>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top