接触一个SilverLight项目,其中需要修改DevExpress GridControl控件的列背景。
本来以来在设计页面下,修改列属性即可,没想到列的属性页中竟然没有背景属性,在网上疯狂寻找资料,都没有这方面的指导。
最后在一个牛人的指导下,解决了这个问题,远远地谢谢这位高手。
老实讲,这个解决方案我也没太完全理解,简单贴出来,供大家参考吧。
主要是通过ColumnBase.CellStyle 属性进行设置,具体实现是在XAML编辑器中,具体如下:
<UserControl.Resources>
<ControlTemplate x:Key="MyCellTemplate" TargetType="dxg:CellContentPresenter">
<Border x:Name="ContentBorder">
<Border.Background>
<SolidColorBrush x:Name="InnerBorderBackground" Color="Red" />
</Border.Background>
<dxg:CellEditor x:Name="PART_CellEditor">
</dxg:CellEditor>
</Border>
</ControlTemplate>
<Style x:Key="MyCellStyle" TargetType="dxg:CellContentPresenter">
<Setter Property="Template" Value="{StaticResource MyCellTemplate}"/>
</Style>
</UserControl.Resources>
定义样式
<ControlTemplate x:Key="MyCellTemplate" TargetType="dxg:CellContentPresenter">
<Border x:Name="ContentBorder">
<Border.Background>
<SolidColorBrush x:Name="InnerBorderBackground" Color="Red" />
</Border.Background>
<dxg:CellEditor x:Name="PART_CellEditor">
</dxg:CellEditor>
</Border>
</ControlTemplate>
<Style x:Key="MyCellStyle" TargetType="dxg:CellContentPresenter">
<Setter Property="Template" Value="{StaticResource MyCellTemplate}"/>
</Style>
</UserControl.Resources>
定义样式
<dxg:GridColumn Name="gridColumn1" FieldName="ProductName" CellStyle="{StaticResource MyCellStyle}"/>
针对某一列设置样式
看起来是通过设置样式来进行操作的,样式的定义是通过Resource实现的,本来想利用这个机会系统了解一下Resource的用法,简单查找了一下,发现这是一个巨大的工程,内容非常多,无奈放弃,留待以后,遇到再说吧。
最后,再一次地感谢给予我指导的这位朋友,虽然我还不知道他的名字。