一、后台動態生成DataGrid的列
1 HistoricalDataDG.Columns.Clear(); 2 HistoricalDataDG.Columns.Add(new DataGridTextColumn() { Header = "時間", ElementStyle = (System.Windows.Style)FindResource("TbrqStyle"), IsReadOnly = true }); 3 HistoricalDataDG.Columns.Add(new DataGridTextColumn() { Header = "T01(℃)", Binding = new Binding("T01"), ElementStyle = (System.Windows.Style)FindResource("dgCell_T01"), IsReadOnly = true});
在后台使用前台xaml里的style 使用FindResource()
二、設置列樣式並使用值轉換器
前台設置的樣式代碼
<UserControl.Resources> <ResourceDictionary>
<root:DGColorConverter x:Key="DGColorConverter"/>
<Style x:Key="TbrqStyle" TargetType="TextBlock"> <Setter Property="Text" Value="{Binding Path=Tbrq,StringFormat='yyyy-MM-dd HH:mm:ss'}"> </Setter> </Style> <Style x:Key="dgCell_T01" TargetType="TextBlock"> <!-- 文本居中--> <Setter Property="TextAlignment" Value="Center"/> <!-- 根據其他列的值設置文本顏色--> <Setter Property="Foreground"> <Setter.Value> <MultiBinding Converter="{StaticResource DGColorConverter}"> <Binding Path="T01"></Binding> <Binding Path="High_Temperature"></Binding> <Binding Path="Mim_Temperature"></Binding> </MultiBinding> </Setter.Value> </Setter> </Style> </ResourceDictionary> </UserControl.Resources>
TbrqStyle設置時間顯示格式為24小時制,在實際使用時發現后台不能設置Binding,否則顯示格式無效
值轉換器DGColorConverter
1 public class DGColorConverter : IMultiValueConverter 2 { 3 /// 需傳入一組對象,(基礎值 比對值) 4 public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) 5 { 6 if (values[0] == DependencyProperty.UnsetValue) 7 { 8 return ""; 9 } 10 11 float tvalue = float.Parse(values[0].ToString()); 12 float hvalue = float.Parse(values[1].ToString()); 13 float mvalue = float.Parse(values[2].ToString()); 14 if (tvalue > hvalue || tvalue < mvalue) 15 { 16 return new SolidColorBrush(Colors.Red); 17 } 18 else 19 { 20 return new SolidColorBrush(Colors.Black); 21 } 22 } 23 24 public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) 25 { 26 throw new NotImplementedException(); 27 } 28 }
通過與其他列的值進行比較,使當前列的文字顯示不同顏色
參考
https://www.cnblogs.com/jameslif/archive/2013/07/24/3209955.html
https://www.cnblogs.com/woodenmancool/p/4268539.html?utm_source=tuicool&utm_medium=referral
http://www.cnblogs.com/lingboxingzi/archive/2012/05/09/2491478.html