Question

Je tente de créer une coutume DataGrid où je peux formater des cellules individuelles en fonction de la valeur de la cellule (par exemple, le texte en rouge pour les valeurs négatives, vert pour postitive) ala cette approche ...

Comment obtenir une valeur de liaison de la cellule courante dans une grille de données WPFToolkit

Je dois aussi convertir les valeurs de négatif à parenthesised (c.-à-; -2,34 à (2,34)). J'ai l'héritage / travail overide. Ma question est, comment puis-je avoir accès aux valeurs dans les cellules dans la méthode GenerateElement surchargée.

Merci à l'avance, Phil

Était-ce utile?

La solution

Mon approche était erronée. Je avais besoin d'utiliser IValueConverter et se lient le texte et les propriétés de premier plan ... aime si

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

Et le 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>

Et la plomberie ...

<UserControl.Resources>
        <y:FixedDecimalConverter x:Key="fcFixedDecimalConverter" />
        <y:ForegroundValueConverter x:Key="fcForegroundValueConverter" />
    </UserControl.Resources>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top