0

我有一个使用 Caliburn.Micro 的 WPF 应用程序。我有一个数据网格:

        <DataGrid x:Name="WeatherStations"
            Grid.Row="0"
            AutoGenerateColumns="False"
            BaseControls:DataGridExtension.Columns="{Binding WeatherStationColumns}"
            CanUserAddRows="False" IsReadOnly="True"
            SelectedIndex="{Binding SelectedIndex, Mode=TwoWay}"
            SelectedItem="{Binding Path=SelectedWeatherStation, Mode=TwoWay}">
    </DataGrid>

由于某些神秘原因,其中一列的某些单元格中的数据以红色前景显示。我找不到可能导致这种情况的原因,并且我看不到这些特定单元格中的数据有什么特别之处,因为相邻的单元格包含相似的数据,但该数据是黑色的。
更奇怪的是,最初我只有几个具有红色前景的单元格,但在我向下滚动后,该特定列中的大多数单元格都变成了红色。

4

1 回答 1

1

当您滚动时,DataGrid 将重用单元格来显示新数据。这是一个称为“虚拟化”的过程。如果您通过行为或在代码隐藏中设置单元格的前景色,则即使通过虚拟化替换单元格值,该前景色也会保留在单元格中。

我有一种预感,BaseControls:DataGridExtension.Columns你的某个地方正在设置前景色。当页面加载和滚动之前,红色单元格的值可能都有一些共同点(全为负数、低于某个阈值、错误等)。找到在您的代码中设置的位置(代码隐藏或标记),这将为您解决问题提供一个良好的开端。

于 2012-10-22T20:44:17.180 回答