Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
Wpf数据网格可视化问题_Wpf_Datagrid_Virtualization - Fatal编程技术网

Wpf数据网格可视化问题

Wpf数据网格可视化问题,wpf,datagrid,virtualization,Wpf,Datagrid,Virtualization,我有datagrid,它有virtualzingstackpanel.isvirtualization=true和virtualzingstackpanel.VirtualizationMode=Standard。 我想根据一些条件在一些datagrid rowHeader上显示一个小图标 我的问题是,它给出了正确的行数,但它只在视图中的行标题上显示图标。当我向下滚动时 我在其他行上看不到图标。 例如:从100行开始,即使有50行打开了图标,它也只在我们可以看到的行上显示图标,而不需要上下滚动。

我有datagrid,它有virtualzingstackpanel.isvirtualization=true和virtualzingstackpanel.VirtualizationMode=Standard。 我想根据一些条件在一些datagrid rowHeader上显示一个小图标

我的问题是,它给出了正确的行数,但它只在视图中的行标题上显示图标。当我向下滚动时 我在其他行上看不到图标。 例如:从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);
                }
            }
        }
foreach(DataRow-in((DataView)rgrid.ItemsSource.Table.Rows())
{
int rowIndex=((数据视图)rgrid.ItemsSource.Table.Rows.IndexOf(eRow);
DataGridRow eGridRow=DataGridHelper.GetRow(rgrid,rowIndex);
DataGridRowHeader=DataGridHelper.FindVisualChild(eGridRow);
if(行标题!=null)
{                  
如果(---条件--)
{
rowHeader.SetValue(DataGridProperties.DisplayIconProperty,true);
}
}
}
行标头模板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>

请帮忙

谢谢


Dee

我不知道你在说什么,WPF一般(最重要的是虚拟化)与winforms(如hacks)的关系不太好。了解MVVM。问题在于,如果您使用的是
虚拟化
,那么
表.行
仅包含可见项,因为这就是它的工作原理,如果您在映像上使用适当的绑定并安装一些代码隐藏逻辑,则不会出现问题。是的,非常正确。我试着使用转换器,它成功了。谢谢