wpf datagrid 單元格根據內容改變顏色


首先根據條件寫好顏色轉換器,代碼如下:

using System;
using System.Windows;
using System.Globalization;
using System.Windows.Data;//有這句才能識別IvalueConverter
using System.Collections.Generic;
using BridgeProject.WebService.DAL;
using System.Linq;
using System.Text;

namespace name1
{
    [ValueConversion (typeof(string),typeof(string))]
    class ColorConverter: IValueConverter
    {
        public object Convert(object value, Type typeTarget, object param, CultureInfo culture)
        {
            
            string strValue = value.ToString();
            if (strValue.IndexOf('/') > 0)
            {
                String[] ss = strValue.Split('/');
                if (ss[1] == "安全")
                    return "Green";
                if (ss[1] == "低偏壓"||ss[1]=="高偏壓")
                    return "Orange";
                return "Red";
            }
            return "Black";
           

        }
        public object ConvertBack(object value, Type typeTarget, object param, CultureInfo culture)
        {
            return "";
        }
    }
}

然后記得在xaml文件中進行資源聲明

xmlns:local="clr-namespace:name1"

<Window.Resources> 

<!--顏色轉換器-->
        <local:ColorConverter x:Key="ColorConverter"/>
</Window.Resources>

最后將轉換器綁定到datagrid的相應單元格中:

<DataGrid x:Name="DataGrid_SafetyManagement_StateTable" AutoGenerateColumns="False" Background="{x:Null}" IsReadOnly="True" 
   Visibility="Hidden" >                                                                
  <DataGrid.Columns>
    <DataGridTemplateColumn    Header="col1" Width="Auto" IsReadOnly="True" >
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <TextBlock  HorizontalAlignment="Center" Text="{Binding col1}" 
              Foreground="{Binding Path=col1,Converter={StaticResource ColorConverter} }"  />
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    <DataGridTemplateColumn    Header="col2" Width="Auto" IsReadOnly="True" >
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <TextBlock  HorizontalAlignment="Center" Text="{Binding col2}" 
            Foreground="{Binding Path=col2,Converter={StaticResource ColorConverter} }"  />
              </DataTemplate>
          </DataGridTemplateColumn.CellTemplate>
       </DataGridTemplateColumn>
  </DataGrid.Columns>
</DataGrid>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM