2011-04-04 26 views
2

我只是想知道是否有可能與WPF進行DATETIME比較,理想情況下我想根據它與當前日期的相關性爲我的數據網格着色。以前的文件爲紅色,未來爲綠色。謝謝你的幫助!帶有DateTime比較的WPF DataTrigger/Setter

<dg:DataGrid Name="files_datagrid" DataContext="{Binding Source={StaticResource filelist_provider}}"   
ItemsSource="{Binding}" CanUserAddRows="False" AutoGenerateColumns="False" Grid.Row="1"> 
<Style TargetType="{x:Type dg:DataGridRow}"> <Style.Triggers>   
     <DataTrigger Binding="{Binding Path=[filedate]}" Value=">TODAY">    
      <Setter Property="Background" Value="Green" />  
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

回答

8

我認爲你最好使用Value Converter.

事情是這樣的:

[ValueConversion(typeof(DateTime), typeof(Brush))] 
public class DateTimeToBrushConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
    var dateTime = (DateTime)value; 
    if (dateTime.Date < DateTime.Now) 
     return Brushes.Red; 
    if (dateTime.Date > DateTime.Now) 
     return Brushes.Green; 

    return Brushes.Black; 
    } 

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

你可以移動的顏色爲參數,使之更加通用的,如果你覺得它。

然後應用這樣的:

<Style TargetType="{x:Type dg:DataGridRow}"> 
    <Setter Property="Background" 
      Value="{Binding Path=fileDate, 
      Converter={StaticResource dateTimeToBrushConverter}}" /> 
</Style> 

凡在你的資源創建dateTimeToBrushConverter。

+0

絕妙的回答!謝謝。 – wonea 2011-04-05 10:50:12