私は最近、Webサービスからポーリングされるアイテムのリストを含む最初のWPFアプリケーションを作成しました。アイテムは、GridViewを介してListViewに表示/データバインドされます。バックグラウンドスレッドが定期的にWebサービスをポーリングし、リストを更新します。
たとえば、最初にListViewにバインドされた3つのアイテムがあり、説明と次のような3つの説明を表示するだけの場合。
- ProjectA
- ProjectB
- ProjectC
後で、「AReallyReallyLongProjectName」の説明を含む新しいアイテムが追加され、次のようなリストになります。
- ProjectA
- ProjectB
- ProjectC
- AReallyR
GridViewColumnはその幅を更新せず、その後、元の幅を拡張した新しいアイテムを切り取ります。
列のサイズを強制的に変更するこのコードを追加しましたが、少しハッキーなようです。(サイズ変更を強制するために幅をゼロに戻すためだけに幅を設定するのは奇妙に思えます)
if(gridView != null) {
foreach(var column in gridView.Columns) {
if (double.IsNaN(column.Width) column.Width = column.ActualWidth;
column.Width = double.NaN;
}
}
これと同じことを達成するための、より優れた、よりエレガントなソリューションはありますか?