0

Caliburn.Microを使用するWPFアプリケーションがあります。私はDataGridを持っています:

        <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>

いくつかの不思議な理由により、列の1つの一部のセルのデータが赤い前景で表示されます。これを引き起こす原因を見つけることができません。また、隣接するセルに同様のデータが含まれているにもかかわらず、そのデータは黒色であるため、これらの特定のセルのデータについて特別なことは何もわかりません。
さらに奇妙なことに、最初は前景が赤のセルが数個しかありませんが、下にスクロールすると、その特定の列のほとんどのセルが赤になります。

4

1 に答える 1

1

スクロールすると、DataGridは表示されている新しいデータのセルを再利用します。これは「仮想化」と呼ばれるプロセスです。ビヘイビアーまたはコードビハインドを使用してセルの前景色を設定している場合、セルの値が仮想化によって置き換えられても、その前景色はセルに残ります。

あなたのどこかでBaseControls:DataGridExtension.Columns前景色を設定しているという予感があります。ページが読み込まれ、スクロールする前に、赤いセルの値にはおそらくすべての共通点があります(すべて負、特定のしきい値を下回る、エラーなど)。それがコードのどこに設定されているか(コードビハインドまたはマークアップ)を見つけてください。これにより、問題を解決するための良いスタートを切ることができます。

于 2012-10-22T20:44:17.180 に答える