你可以在DataGrid.LoadingRow event handler里得到即将创建的Row, 然后设定你想要的效果.
但是要注意的是DataGrid的Row是会被重复使用的. 就是说,如果你的数据有1000行,但是窗口只显示10行,那么只有10个Row的Instance来显示,如果用户滚动的时候,移出的行会被用在新移入的行.
所以,你如果在LoadingRow里改变了行的某些非绑定的属性,一定要记着每行都要重新设置, 否则会出现混乱.
详见我这篇Blog:http://blogs.msdn.com/xusun/archive/2008/11/09/datagrid-in-silverlight-row-recycling.aspx
最好能通过绑定来实现,就是把想要改变的属性绑定到你的数据中起决定性的属性上,然后通过IValueConverter 来实现. 这样更省心.
动态改变属性,一个是可以直接创建 Style s = new Style(typeof(...)), 然后通过添加Setters来改变属性值, 或者可以通过XamlReader.Load(...) as Style 来动态Load Style