WPF DataGrid コントロールの行が右にずれて表示される場合がある

適用対象: .NET Framework 4.5

現象


WPF (Windows Presentation Foundation) の System.Windows.Controls.DataGrid コントロールを以下の条件で使用すると、DataGrid コントロールの一部の行の並びが右にずれる現象が発生します。
  • DataGrid コントロールの HeadersVisibility プロパティに DataGridHeadersVisibility.Column を設定している
  • DataGrid の Virtualization 機能が有効になっている

原因


DataGrid コントロールの HeadersVisibility プロパティに DataGridHeadersVisibility.Column を設定すると、DataGrid の行ヘッダを非表示にすることが可能です。ところが行データを表示する際の WPF 内部動作に問題があるために、DataGrid の Virtualization 機能を有効にした場合、HeadersVisibility プロパティの値が正常に反映されないことがあります。

このため、DataGrid コントロールの一部の行の表示が、右にずれる現象が発生します。

回避策


HeadersVisibility プロパティの代わりに RowHeaderWidth プロパティをゼロに設定することで、行ヘッダを非表示にすることができます。このプロパティは WPF 内部動作の問題の影響を受けないため、DataGrid コントロールの一部の行の表示が右にずれる現象は発生しません。

状況


マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。