ListView はネイティブの Windows コントロールです。はい、背景画像をサポートしています。LVM_SETBKIMAGE メッセージが処理します。ただし、ボイラープレートの Winforms BackgroundImage サポートはサポートしていません。特に欠けているのは、Winforms が Control クラスに実装し、ControlStyles.UserPaint がオンになっているときに実装するプロパティである BackgroundImageLayout です。ネイティブの Windows コントロール用ではなく、自分自身をペイントします。
ListView の Winforms ラッパー クラスを作成した人物は、次善の策を講じました。彼は、ListView クラスに BackgroundImageTileという新しいプロパティを追加しました。ネイティブ Windows コントロールが実装するレイアウト オプション。これにより、ネイティブ コントロールがサポートするレイアウト オプションが 2 つだけ残ります。タイルを張るか、張らないか。
その同じ男は、Winforms ラッパー クラスが合理的に動作するようにするために、いくつかのかなり英雄的なことを行いました。コードは、ネイティブ コントロールの癖を回避するためのハックでいっぱいです。お見事。Windows チームの担当者が Winforms の担当者の生活を楽にする余裕があれば、彼の生活はずっと楽だったでしょう。しかし、そのようには機能しません。ListView は Winforms よりもずっと長く使用されています。また、最初からうまく設計されていなかったため、Microsoft は当時、かなり大きな成長痛を抱えていました。
レガシ コード (WPF、Silverlight、WinRT) に依存しないようにルールを早送りして変更します。