您的位置:首页 > 其它

WPF DataGrid 改变单元格字体颜色或单元格背景颜色(二)

2012-11-28 10:57 1436 查看
与上一篇 WPF DataGrid 改变单元格字体颜色或单元格背景颜色(一) 里的后台实现方法一样,改变前台XAML代码:

前台XAML代码:

<Window x:Class="WpfDataGridCellColors.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:loca="clr-namespace:WpfDataGridCellColors"
Title="MainWindow" Height="261" Width="649">

<Window.Resources>
<loca:ColorConverter x:Key="MyColorConvert"/>
</Window.Resources>

<Grid>
<DataGrid CanUserDeleteRows="False" CanUserAddRows="False"
AutoGenerateColumns="False" IsReadOnly="True"
Name="dataGrid"  Background="White"
GridLinesVisibility="All" Margin="5"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
HeadersVisibility="Column"  AlternationCount="2">

<DataGrid.Columns>

<DataGridTextColumn Binding="{Binding Title}" Header="项目" Width="150"/>

<DataGridTemplateColumn Width="150" >
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>

<TextBlock Text="A" />

</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>

<TextBlock Text="{Binding IA}" VerticalAlignment="Center" HorizontalAlignment="Center"
Foreground="{Binding AFColor}"/>

</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

<DataGridTemplateColumn Width="150" >
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>

<TextBlock Text="B" />

</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>

<TextBlock Text="{Binding IB}" VerticalAlignment="Center" HorizontalAlignment="Center"
Foreground="{Binding BFColor}"/>

</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

<DataGridTemplateColumn Width="150" >
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>

<TextBlock Text="C" />

</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>

<TextBlock Text="{Binding IC}" VerticalAlignment="Center" HorizontalAlignment="Center"
Foreground="{Binding CFColor}"/>

</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

</DataGrid.Columns>

</DataGrid>
</Grid>
</Window>


这里列单元格模版里的Foreground直接绑定后台的Color属性,要将其变为什么颜色,可在后台代码里进行控制,然后直接绑定到前台代码中。

如下面后台代码中所示的:

ContrastList.Add(new Contrasts()
{
Title = "减数",
IA = 110,
AFColor = Brushes.Black,
IB = 220,
BFColor = Brushes.Red,
IC = 330,
CFColor = Brushes.Green
});

后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfDataGridCellColors
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
private List<Contrasts> _ContrastList;
public List<Contrasts> ContrastList
{
get { return _ContrastList; }
set
{
_ContrastList = value;
}
}

public MainWindow()
{
InitializeComponent();

ContrastList = new List<Contrasts>();

ContrastList.Add(new Contrasts() { Title = "减数", IA = 110, AFColor = Brushes.Black, IB = 220, BFColor = Brushes.Red, IC = 330, CFColor = Brushes.Green });

dataGrid.ItemsSource = ContrastList;
}
}

public class Contrasts
{
private string _Title;
public string Title
{
get { return _Title; }
set { _Title = value; }
}

private double _IA;
public double IA
{
get { return _IA; }
set { _IA = value; }
}

private double _IB;
public double IB
{
get { return _IB; }
set { _IB = value; }
}

private double _IC;
public double IC
{
get { return _IC; }
set { _IC = value; }
}

private SolidColorBrush _AFColor;
public SolidColorBrush AFColor
{
get { return _AFColor; }
set { _AFColor = value; }
}

private SolidColorBrush _BFColor;
public SolidColorBrush BFColor
{
get { return _BFColor; }
set { _BFColor = value; }
}

private SolidColorBrush _CFColor;
public SolidColorBrush CFColor
{
get { return _CFColor; }
set { _CFColor = value; }
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: