我有数据网格,它有 VirtualizingStackPanel.IsVirtualizing = true 和 VirtualizingStackPanel.VirtualizationMode = Standard。我想根据某些条件在某些数据网格 rowHeader 上显示一个小图标
我的问题是,它给了我正确的行数,但它只在视图中的那些 rowHeaders 上显示 Icon 。当我向下滚动时,我看不到其他行上的图标。例如:从 100 行开始,即使 50 行有图标,它也只在我们可以看到的那些行上显示图标,而无需向上或向下滚动。
我正在使用下面的代码来显示图标
foreach (DataRow eRow in ((DataView)rgrid.ItemsSource).Table.Rows())
{
int rowIndex = ((DataView)rgrid.ItemsSource).Table.Rows.IndexOf(eRow);
DataGridRow eGridRow = DataGridHelper.GetRow(rgrid, rowIndex);
DataGridRowHeader rowHeader = DataGridHelper.FindVisualChild<DataGridRowHeader>(eGridRow);
if (rowHeader != null)
{
if (----condition----)
{
rowHeader.SetValue(DataGridProperties.DisplayIconProperty, true);
}
}
}
RowHeader 模板 XAML 代码
<ControlTemplate TargetType="{x:Type DataGridRowHeader}" x:Key="RowHeaderControlTemplateNoMouseOver">
<Grid Background="{TemplateBinding Background}" x:Name="dgRowHeader">
<ContentPresenter x:Name="content" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,6,0,0" Content="{TemplateBinding Content}" Height="20" />
<Grid Grid.Column="0" x:Name="errorIconNoMouseOver" HorizontalAlignment="Right" VerticalAlignment="Bottom" Visibility="Collapsed">
<Image Source="../../Resources/Images/warningimage_small.png" Margin="0,0,3,3" Width="16"></Image>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="prism:DataGridProperties.DisplayIcon" Value="True">
<Setter TargetName="errorIconNoMouseOver" Property="Visibility" Value="Visible" />
</Trigger>
</ControlTemplate.Triggers>
请帮助。
谢谢
迪