【问题标题】:wpf datagrid row Foreground in code behind代码后面的wpf datagrid行前景
【发布时间】:2012-07-07 04:29:08
【问题描述】:

我不想使用 MVVM 并且想在后面的代码中(在 SelectionChanged EventHandler 函数中)更改我的数据网格上的选定行前景,但我找不到可靠的方法。

我的行可以是黑色、蓝色和红色,但根据某些条件显示具有更高优先级的颜色。选择当前行后,我应该删除,f.e.我的优先级列表中的黑色。

我有一些课:

public class TempClass{ public string cell1 { get; set; }; public string cell2 { get; set; };}

TempClass[] collection; 

与我的数据网格绑定:

datagrid.ItemsSource = collection;

有什么想法吗?

【问题讨论】:

  • 你应该先阅读this

标签: wpf datagrid foreground


【解决方案1】:
var rowStyle = new Style {TargetType = typeof (DataGridRow)};
rowStyle.Setters.Add(new Setter(ForegroundProperty, Brushes.Green));
var rowTrigger = new Trigger {Property = DataGridRow.IsSelectedProperty, Value = true};
rowTrigger.Setters.Add(new Setter(ForegroundProperty, Brushes.Red));
rowTrigger.Setters.Add(new Setter(BackgroundProperty, Brushes.Orange));
rowStyle.Triggers.Add(rowTrigger);

var cellStyle = new Style {TargetType = typeof (DataGridCell)};
var cellTrigger = new Trigger {Property = DataGridCell.IsSelectedProperty, Value = true};
cellTrigger.Setters.Add(new Setter(ForegroundProperty, Brushes.Red));
cellTrigger.Setters.Add(new Setter(BackgroundProperty, Brushes.Orange));
cellStyle.Triggers.Add(cellTrigger);

datagrid.RowStyle = rowStyle;
datagrid.CellStyle = cellStyle;

【讨论】:

  • 感谢您的回答,但我想在后面的代码中更改我的数据网格上的 SELECTED 行前景。我的行可以是黑色、蓝色和红色,但根据某些条件显示具有更高优先级的颜色。选择当前行后,我应该删除,f.e.我的优先级列表中的黑色。
  • 我明白了,我用示例更新了答案,说明如何在 .cs 中编写触发器
  • 非常感谢,Styles 和 Setters 没问题,您能否在回答中添加如何访问我的 dataGrid 中的选定“DataGridRow”,因为我有 TempClass[] collection; 和 @987654325 @。当我试图获得 Selected DataGridRow like: DataGridRow currentRow = datagrid.SelectedItem as DataGridRow currentRow 为空时;
  • 啊,查看此链接:stackoverflow.com/questions/3913580/…
  • 非常感谢 Denis Morozov,我不知道获取 DataGrid 的选定行会如此困惑:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
相关资源
最近更新 更多