回复 4楼suntongowen的帖子
我们这里没有现成的例子。
不过我可以给你提供基本的思路,供你参考。
需要重新定义'DataGridRowPresenter’ ,然后绑定必要元素(BackgroundElement)
基本步骤:
1.C1DataGrid设置RowStyle:
- <c1:C1DataGrid x:Name="grid" RowStyle="{StaticResource rowstyle}"/>
复制代码
2.继承IValueConverter接口,在Convert方法里判断某种条件下设置背景色。
比如:
- public class MyConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
- {
- var p = value as Product; // typecast the data item here
- if (p != null)
- {
- if (p.Available == true)
- {
- return new SolidColorBrush(Colors.Yellow);
- }
- else return new SolidColorBrush(Colors.White);
- }
- return new SolidColorBrush(Colors.White);
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
- {
- return null;
- }
- }
复制代码
3.在XAML里,重写Style,类型为DataGridRowPresenter。
- <local:MyConverter x:Key="converter"/>
- <Style x:Key="rowstyle" TargetType="c1:DataGridRowPresenter">
- <Setter Property="BorderThickness" Value="0"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="c1:DataGridRowPresenter" >
- //在这里重写Template,下面这句代码是参考的。
- <Border x:Name="BackgroundElement" Background="{Binding Path=Row.DataItem,RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource converter}}" />
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
复制代码 |