0
我的應用程序包含綁定到來自單個SQL數據庫表的可觀察集合的對象的數據網格。一旦列包含日期和時間,我想突出顯示超過30分鐘的行。如何使用MVVM突出顯示基於DateTime的DataGrid行
XAML
<!--DataGrid style-->
<Style x:Key="DataGridStyle" TargetType="{x:Type DataGrid}">
<Setter Property="ColumnHeaderStyle" Value="{DynamicResource ColumnHeaderStyle}"/>
<Setter Property="CellStyle" Value="{DynamicResource DataGridCellStyle}"/>
</Style>
<!--DataGridColumnHeader style-->
<Style x:Key="ColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="MinHeight" Value="25"/>
<Setter Property="Background" Value="#FFE5ECEF"/>
</Style>
<DataGrid x:Name="licenseGrid"
ItemsSource="{Binding LoggedUsers}"
SelectedItem="{Binding SelectedLicenses}"
Style="{DynamicResource DataGridStyle}"
Grid.Row="5"
Grid.Column="2"
Grid.ColumnSpan="7"
Height="525"
VerticalAlignment="Top"
IsReadOnly="True"
AutoGenerateColumns="False"
HeadersVisibility="Column"
SelectionMode="Extended"
CanUserDeleteRows="True"
EnableRowVirtualization="False">
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsGhost}" Value="true">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#FFCBE8F6"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="BorderBrush" Value="#FFCBE8F6"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="revokeBtn"
ToolTip="Revoke Selected License or Licenses"
Content="Revoke"
Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.RevokeSelectedCommand}"
CommandParameter="{Binding}">
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Computer" Binding="{Binding machineName}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFE5ECEF"/>
<Setter Property="MinWidth" Value="90"/>
<Setter Property="Margin" Value="3"/>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Windows User" Binding="{Binding userName}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFE5ECEF"/>
<Setter Property="MinWidth" Value="95"/>
<Setter Property="Margin" Value="3"/>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="MediaDent User" Binding="{Binding userId}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFE5ECEF"/>
<Setter Property="MinWidth" Value="90"/>
<Setter Property="Margin" Value="3"/>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Session ID" Binding="{Binding tsSessionId}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFE5ECEF"/>
<Setter Property="MinWidth" Value="65"/>
<Setter Property="Margin" Value="3"/>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Application" Binding="{Binding appId}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFE5ECEF"/>
<Setter Property="MinWidth" Value="65"/>
<Setter Property="Margin" Value="3"/>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Date In" Binding="{Binding dateIn}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFE5ECEF"/>
<Setter Property="MinWidth" Value="135"/>
<Setter Property="Margin" Value="3"/>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Last Ping" Binding="{Binding lastPing}">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFE5ECEF"/>
<Setter Property="MinWidth" Value="135"/>
<Setter Property="Margin" Value="3"/>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Record ID" Binding="{Binding Id}" Visibility="Hidden"/>
</DataGrid.Columns>
</DataGrid>
正如你所看到的,我已經開始用DataGrid.RowStyle
一個DataTrigger
但我不知道這是採取的最佳路線。任何建議或參考將不勝感激。