Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xceed datagrid-根据日期时间值更改数据行颜色_C#_Wpf_Datagrid_Xceed - Fatal编程技术网

C# Xceed datagrid-根据日期时间值更改数据行颜色

C# Xceed datagrid-根据日期时间值更改数据行颜色,c#,wpf,datagrid,xceed,C#,Wpf,Datagrid,Xceed,我有一个包含一般发票信息的datagrid(Xceed community edition 3.1.0版)。其中一个字段包含发票的到期日期。我想为到期日过期的行使用不同的颜色。为了实现这一点,我使用了一个值转换器。 这是我的XAML: <dg:DataGridControl.Resources> <Style TargetType="{x:Type dg:DataRow}" BasedOn="{StaticResource DefaultDataRowStyle}"&g

我有一个包含一般发票信息的datagrid(Xceed community edition 3.1.0版)。其中一个字段包含发票的到期日期。我想为到期日过期的行使用不同的颜色。为了实现这一点,我使用了一个值转换器。 这是我的XAML:

<dg:DataGridControl.Resources>
    <Style TargetType="{x:Type dg:DataRow}" BasedOn="{StaticResource DefaultDataRowStyle}">
        <Setter Property="Background" Value="{Binding DocumentDueDate, Converter={StaticResource DueDateToBrushConverter}}"/>
        <!--<Setter Property="Background" Value="OrangeRed"/>-->
    </Style>
</dg:DataGridControl.Resources>

<dg:DataGridControl.Columns>
    <dg:Column Title="{bx:LocalizeBinding Type, Global=True}" FieldName="MovementType" Width="45"/>
    <dg:Column Title="{bx:LocalizeBinding Number, Global=True }" FieldName="DocumentNumber" Width="90"/>
    <dg:Column Title="{bx:LocalizeBinding Date, Global=True }" FieldName="DocumentDate" Width="90"/>
    <dg:Column Title="{bx:LocalizeBinding DueDate, Global=True }" FieldName="DocumentDueDate" Width="90"/>
    <dg:Column Title="{bx:LocalizeBinding Debit, Global=True }" FieldName="Debit" CellHorizontalContentAlignment="Right" Width="80">
        <dg:Column.CellContentTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding StringFormat=N2}" HorizontalAlignment="Right"/>
            </DataTemplate>
        </dg:Column.CellContentTemplate>
    </dg:Column>
    <dg:Column Title="{bx:LocalizeBinding Credit, Global=True }" FieldName="Credit" CellHorizontalContentAlignment="Right" Width="80">
        <dg:Column.CellContentTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding StringFormat=N2}" HorizontalAlignment="Right"/>
            </DataTemplate>
        </dg:Column.CellContentTemplate>
    </dg:Column>
    <dg:Column Title="{bx:LocalizeBinding Balance, Global=True }" FieldName="Balance" CellHorizontalContentAlignment="Right">
        <dg:Column.CellContentTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding StringFormat=N2}" HorizontalAlignment="Right"/>
            </DataTemplate>
        </dg:Column.CellContentTemplate>
    </dg:Column>
    <dg:Column Title="{bx:LocalizeBinding Difference, Global=True }" FieldName="Difference" CellHorizontalContentAlignment="Right">
        <dg:Column.CellContentTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding StringFormat=N2}" HorizontalAlignment="Right"/>
            </DataTemplate>
        </dg:Column.CellContentTemplate>
    </dg:Column>
    <dg:Column Title="{bx:LocalizeBinding Currency, Global=True }" FieldName="Currency" Width="70"/>
    <dg:Column Title="{bx:LocalizeBinding Description, Global=True }" FieldName="Description" Width="250" TextWrapping="Wrap">
    </dg:Column>
</dg:DataGridControl.Columns>

<dg:DataGridControl.View>
    <dg:TableView/>
</dg:DataGridControl.View>


下面是我的转换器类:

public class DueDateToBrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        DateTime? input = value as DateTime?;
        if (input.HasValue && input < DateTime.Now)
            return Brushes.OrangeRed;
        else
            return Brushes.Transparent;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
公共类DueDateToBrushConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
DateTime?输入=作为DateTime?的值?;
if(input.HasValue&&input

我在转换器中放置了一个断点,代码被执行,但是行的颜色没有改变。将颜色设置为固定颜色(如注释行中所示)效果很好。我不知道我做错了什么。任何帮助都将不胜感激。

请尝试使用DataTrigger:

<dg:DataGridControl.Resources>
    <Style TargetType="{x:Type dg:DataRow}" BasedOn="{StaticResource DefaultDataRowStyle}">
        <Style.Triggers>
           <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=DataContext.DocumentDueDate, Converter={StaticResource ResourceKey=DueDateToBrushConverter}}" Value="true">
                <Setter Property="Background" Value="OrangeRed" />
           </DataTrigger>
        </Style.Triggers>
    </Style>
</dg:DataGridControl.Resources>

和转换器:

public class DueDateToBrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        DateTime? input = value as DateTime?;
        if (input.HasValue && input < DateTime.Now)
            return true;
        else
            return false;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
公共类DueDateToBrushConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
DateTime?输入=作为DateTime?的值?;
if(input.HasValue&&input