文章分類/Infragistics
讓我們根據 XamDataGrid 中的單元格值來變更整行的顏色。完成的圖像將如下所示。
1. 將 IValueConverter 的實例綁定到 DataRecordCellArea 的 Background 屬性。
將 Style 的實例新增至以 DataRecordCellArea 為目標的 Resources,並將 Background 屬性綁定到儲存格的庫存值。此外,指定一個 IValueConverter(*在步驟 2 中編碼),用於傳回庫存數量的顏色。
新增至資源的樣式使用XamDataGrid 的 FieldLayoutSettings 的DataRecordCellAreaStyle屬性連結到 XamDataGrid 。
<Window.Resources> <!-- IValueConverter(※実体は手順2でコーディングします) --> <local:StockedAmountToBrushConverter1 x:Key="stockedAmountToBrushConverter1"/> <!-- DataRecordCellAreaのStyle --> <Style TargetType="{x:Type igDP:DataRecordCellArea}" x:Key="myRecordStyle1"> <Setter Property="Background" Value="{Binding Cells[StockedAmount].Value, Converter={StaticResource stockedAmountToBrushConverter1}, Mode=OneWay}"/> </Style> </Window.Resources> ... <igDP:XamDataGrid> <igDP:XamDataGrid.FieldLayoutSettings> <!-- DataRecordCellAreaStyleプロパティにResourcesのStyleを指定 --> <igDP:FieldLayoutSettings DataRecordCellAreaStyle="{StaticResource myRecordStyle1}"/> </igDP:XamDataGrid.FieldLayoutSettings> </igDP:XamDataGrid>
2. 建立IValueConverter實體。
編寫一個 IValueConverter,傳回庫存計數的顏色。
public class StockedAmountToBrushConverter1 : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if(value != null) { // 渡されてきたvalue(=Cells[StockedAmount].Value(在庫数))を整数値に変換する。 int stockedAmount = (int)value; // 在庫数が20未満ならピンクを返す if (stockedAmount < 20) return new SolidColorBrush(Colors.Pink); // それ以外は白を返す else return new SolidColorBrush(Colors.White); } return Binding.DoNothing; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }
這樣就完成了整個過程。