知道行颜色何时更改+;WPF&x2B;数据网格
快速提问 我有一个DataGrid,它通过SQL依赖项自动更新。 我设置了一个触发器,将BackgroundProperty更改为基于几个值(红色或绿色)的颜色。 我真的希望在触发器上使用事件设置器 我的问题是:当触发器更改背景时,触发哪个eventhandler?我尝试了DependencyPropertyDescriptor-当检查itemssource已更改时,它可以工作,但不检查DataGridRow.BackgroundProperty或Control.BackgroundProperty(只是不触发) 和我的依附者一样知道行颜色何时更改+;WPF&x2B;数据网格,wpf,datagrid,Wpf,Datagrid,快速提问 我有一个DataGrid,它通过SQL依赖项自动更新。 我设置了一个触发器,将BackgroundProperty更改为基于几个值(红色或绿色)的颜色。 我真的希望在触发器上使用事件设置器 我的问题是:当触发器更改背景时,触发哪个eventhandler?我尝试了DependencyPropertyDescriptor-当检查itemssource已更改时,它可以工作,但不检查DataGridRow.BackgroundProperty或Control.BackgroundProper
var desc = DependencyPropertyDescriptor.FromProperty(ItemsControl.ItemsSourceProperty, typeof(Control));
desc.AddValueChanged(MyDataGrid,MyEventHandler);
我的活动是这样的:
DataGrid mygrid = sender as DataGrid;
var itemsSource = mygrid.ItemsSource as IEnumerable;
if (null != itemsSource)
{
foreach (var item in itemsSource)
{
var row = mygrid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
if (null != row)
{
if (Equals(Brushes.Red, row.Background))
{
//Do whatever
}
}
}
}
但行总是空的-为什么是空的?。
编辑:它返回null,因为它是虚拟化的,并且不在“视图”中
我希望能够创建一个eventhandler,与datatrigger中的eventsetter一起使用
提前谢谢。Sheridan的建议是,你已经知道什么时候应该更改背景颜色,所以只需使用这些数据,并完成你想要的额外工作,
但如果您只需创建一个对后台更改的回调,则可以使用添加更改的处理程序: var desc=DependencyPropertyDescriptor.FromProperty(Control.BackGroundProperty,typeof(Control));
desc.AddValueChanged(这是yourEventHandler) @Sheridan的建议是,你已经知道什么时候应该更改背景颜色,所以只需使用这些数据,然后做你想要的额外工作,
但如果您只需创建一个对后台更改的回调,则可以使用添加更改的处理程序: var desc=DependencyPropertyDescriptor.FromProperty(Control.BackGroundProperty,typeof(Control));
desc.AddValueChanged(这是yourEventHandler) 您的
触发器肯定会根据某些数据值更改背景的颜色,不是吗?为什么不监视相关的数据属性呢?好吧,这里有一件事-触发器值是动态的(使用(valueconverters)),基于另一个SQLTable,但肯定在某个阶段,它取决于传入的新数据。。。您刚才说它基于另一个SQL表。你不能迭代输入的数据来找到触发触发器的东西,并在该阶段对其进行操作吗?当然你的触发器会根据某些数据值改变背景的颜色,不是吗?为什么不监视相关的数据属性呢?好吧,这里有一件事-触发器值是动态的(使用(valueconverters)),基于另一个SQLTable,但肯定在某个阶段,它取决于传入的新数据。。。您刚才说它基于另一个SQL表。你不能迭代输入的数据来找到触发触发器的任何东西,并在该阶段对其采取行动吗?@AlekCarlsen你得到了什么?DataGridRow或TextBox是否。。。发布您尝试过的内容,我可以让它在itemssource更改时启动,但在我使用..DependencyPropertyDescriptor.FromProperty时不会(Control.BackgroundProperty..当背景为changed@AlekCarlsen显示执行和不执行的代码work@AlekCarlsen你得到了什么?不管是DataGridRow还是TextBox…发布你尝试过的内容,我都可以让它在itemssource上启动,但当我使用..DependencyPropertyDescriptor.FromProperty时就不会了y(Control.BackgroundProperty..当背景为changed@AlekCarlsen显示有效代码和无效代码