none
关于控件内置样式的问题 RRS feed

  • 问题

  • 请问datagrid如何指定具体哪一行的样式吗 ? 比如绑定数据之后..设置第3行的背景色为红色.  是否应该动态设置行样式.
    还有Microsoft.Windows.Controls.DataVisualization.dll中的图表. <Charting:PieSeries LegendItemStyle=""></Charting:PieSeries>中图例的样式如何动态设置.

    我试着创建的时候查了下他的结构,发现赋值的方式不进去.. 

    他有是一个封装类.也无法继承重写. 我还想在里面嵌入一些样式呢.
    就是我要以编程的方式创建她们的样式并设置.

    能否大家介绍下着快的资料或者给个详细的例子

    2009年5月25日 14:28

答案

  • 你可以在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

    2009年5月25日 19:41