views:

24

answers:

1

Hello,

I have a Grid. The grid's columns are auto-generated at run-time based on the user's selection.

I need the cells in the grid to be red if the content is a negative number.

I have created a DataTemplateSelector. The DataTemplateSelector get's correctly called and returns my template if the cell is negative.

Since my columns are auto-generated, I cannot simply put the correct field in the binding in my template.

            <DataTemplate x:Key="MontantNegatifTemplate">                    
                <TextBlock Foreground="Red" Text="{Binding}" />
            </DataTemplate>

If I do a Template like this the text is the name of the object the grid is bound on.

If I do something like:

            <DataTemplate x:Key="MontantNegatifTemplate">                    
                <TextBlock Foreground="Red" />
            </DataTemplate>

The cell is empty since the Textblock seems to overwrite the standard auto-generated cell.

Is there a way to make this work? Should I use another approach?

A: 

I finally found the awnser to my question.

I needed to use a StyleSelector rather than a DataTemplateSelector.

In the same way I needed to define a Style instead of a DataTemplate in my Grid resources.

<style:NegativeStyleSelector x:Key="NegativeStyleSelector">
                    <style:NegativeStyleSelector.NegativeStyle>
                        <Style TargetType="GridViewCell">
                            <Setter Property="Foreground" Value="Red"/>
                        </Style>
                    </style:NegativeStyleSelector.NegativeStyle>
                </style:NegativeStyleSelector>
bleakcabal