WPF DataGrid突出显示

 DataGrid有时需要对某个表格的数据进行突出显示:

思路:利用IMultiValueConverter对多参数的数据进行后台验证,返回值可针对字体、背景色、字体大小等可视数据。

前端代码如下:

<DataGrid   PreviewTextInput="Mum_PreviewTextInput" MouseDoubleClick="DataGrid_MouseDoubleClick"
                       Style="{StaticResource DataGrid.Style}" BorderBrush="{DynamicResource Border.BorderBrushThems}" BorderThickness="1 1 1 0" ItemsSource="{Binding ParseXML.DriverParaList}"   FontWeight="Normal">
                    <DataGrid.Columns>                       
                        <DataGridTemplateColumn Header="offline"  Width="95" IsReadOnly="True">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock x:Name="off" Text="{Binding Path=Offine,Mode=OneWay}" Tag ="{Binding Path=Actualvalue}"  HorizontalAlignment="Stretch" VerticalAlignment="Center"  TextAlignment="Center">
                                        <TextBlock.Background>
                                           
<MultiBinding Converter="{StaticResource MultiParaToColor}">
                                                <Binding Path="Text" ElementName="off"/>
                                                <Binding Path="Tag" ElementName="off"/>
                                            </MultiBinding>
                                        </TextBlock.Background>

                                    </TextBlock>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                        <DataGridTextColumn Header="OnlineValue"  Width="95"  Binding="{Binding Path=Actualvalue}" IsReadOnly="True"  ElementStyle="{StaticResource DataGridTextColumnCenterSytle}" />
                </DataGrid>

后台转换器如下:

    public class MultiParaToColorConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if ((values[1] != null) && (values[0] != null))
            {

                if (values[1].ToString() != values[0].ToString())
                {
                    return new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red);
                }
                else
                {
                    return new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Transparent);
                }
            }
            else
            {
                return new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Transparent);
            }

        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值