通过绑定不同的颜色设置为一列 - DataGrid

时间:2013-02-05 07:09:32

标签: wpf mvvm datagrid

我有一个X类有一些数据:

    private string yyy;

    public string YYY
    {
        get { return yyy; }
        set
        {
            yyy= value;
            NotifyPropertyChanged("YYY");
        }
    }

    private string color;
    [Browsable(false)]
    public string Color
    {
        get { return color; }
        set
        {
            color = value;
            NotifyPropertyChanged("Color");
        }
    }

我有ObservableCollection来保存类X的列表

public ObservableCollection<X> xxx{ get; set; }

列表通过绑定收缩到DataGrid,如下所示:

    <DataGrid x:Name="XXXX" ItemsSource="{Binding}" AutoGenerateColumns="True">
                </DataGrid>

列表位于DataGrid的DataContext中,

我希望每一行中第一列的文字都是我对类数据的颜色?我会做转换器,从字符串变为颜色,但我如何在xmal中定义它?

1 个答案:

答案 0 :(得分:1)

您可以使用DataGridTemplateColumn

<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
   <DataGrid.Columns>
        <DataGridTemplateColumn Header="FirstName" >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FirstName}" Foreground="{Binding Color}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
       <DataGridTextColumn Header="LastName" Binding="{Binding LastName}"></DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

从字符串到颜色的转换是隐式的。 我知道它不是严格的MVVM,但我不会因为拥有Color类型的Color属性而失眠。