如何在动态网格中应用DataTemplate?

时间:2010-09-08 15:50:29

标签: wpf datatemplate datatemplateselector

我有一个网格。根据用户的选择,在运行时自动生成网格列。

如果内容为负数,我需要网格中的单元格为红色。

我创建了一个DataTemplateSelector。如果单元格为负数,则正确调用DataTemplateSelector并返回我的模板。

由于我的列是自动生成的,因此我不能简单地将正确的字段放在模板中的绑定中。

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

如果我像这样做一个模板,那么文本就是网格绑定的对象的名称。

如果我这样做:

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

单元格为空,因为Textblock似乎会覆盖标准的自动生成单元格。

有没有办法让这项工作?我应该使用其他方法吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了问题的灵感来源。

我需要使用StyleSelector而不是DataTemplateSelector。

我需要在Grid资源中定义Style而不是DataTemplate。

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