에 따라 스타일 행이 항상 업데이트되는 것은 아니므로 this one을 읽고 다른 하나는 링크를 찾을 수 없지만 그 중 일부는 보이지 않습니다 해당 솔루션을 보유하고 있습니다.스크롤하는 가상 행 WPF Datagrid
아래 정의 된 DataGrid가 있고 AlternationIndex에서 0 또는 1로 트리거되는 다양한 스타일이 있습니다. 위로 스크롤하면 주어진 셀이 한 색상에서 다른 색상으로 바뀔 때가 있습니다.
가상화를 끄지 않고 이런 일이 발생하지 않도록하는 방법을 알고 있습니까?
(필자는 공간을 절약하기 위해 컬럼 정의를 사용했지만, 이것들은 중요하지 않다고 생각합니다. 모든 DataTriggers는 항상 작동합니다. 문제가되는 것은 단지 변경 사항입니다.)
<DataGrid
ItemsSource="{Binding Path=LogItems, Mode=OneWay}"
Grid.Row="1"
AlternationCount="2"
Name="logDataGrid"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
<DataGrid.Resources>
<local:IsEntryExceptionConverter x:Key="isEntryExceptionConverter" />
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Name="DataGridCellBorder">
<ContentControl Content="{TemplateBinding Content}">
<ContentControl.ContentTemplate>
<DataTemplate>
<TextBlock Background="Transparent" TextWrapping="WrapWithOverflow" TextTrimming="CharacterEllipsis"
Height="auto" Width="auto" Text="{Binding Text}"/>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="TextBlock.Foreground" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
<SolidColorBrush x:Key="ExceptionBrush" Color="OrangeRed" Opacity="0.5"/>
<SolidColorBrush x:Key="ErrorBrush" Color="Red" Opacity="0.5"/>
<SolidColorBrush x:Key="WarningBrush" Color="Orange" Opacity="0.5"/>
<SolidColorBrush x:Key="AlternatingRowBackground0" Color="AliceBlue" Opacity="0.5" />
<SolidColorBrush x:Key="AlternatingRowBackground1" Color="LightBlue" Opacity="0.5" />
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<Trigger Property="AlternationIndex" Value="0">
<Setter Property="Background" Value="{StaticResource AlternatingRowBackground0}" />
</Trigger>
<Trigger Property="AlternationIndex" Value="1">
<Setter Property="Background" Value="{StaticResource AlternatingRowBackground1}" />
</Trigger>
<DataTrigger Binding="{Binding Path=Level}" Value="Warning">
<Setter Property="Background" Value="{StaticResource WarningBrush}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=Message, Converter={StaticResource isEntryExceptionConverter}}" Value="True">
<Setter Property="Background" Value="{StaticResource ExceptionBrush}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=Level}" Value="Error">
<Setter Property="Background" Value="{StaticResource ErrorBrush}" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
데이터를로드 할 때 생성되는 숨겨진 ID 속성이 있지만 데이터 정렬 및 필터링과 관련된 문제가 발생할 수 있다고 생각했습니다. 어쨌든 빠른 응답 주셔서 감사합니다, 비록 내가 바라는 것이 아니 었더라도! 아무도 더 나은 방법으로 나를 위해 그것을 해결할 수 없다면 (그리고 그것은있을 법하지 않겠지 만), 나는 이것을 수 일 안에 대답으로 받아 들일 것입니다. – Ben