1

私は最近、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;
    }
}

これと同じことを達成するための、より優れた、よりエレガントなソリューションはありますか?

4

2 に答える 2

1

これは1つのアプローチです。別の方法は、リスト内のアイテムが更新されるたびに手動で列幅をリセットすることです。

private void ResizeGridViewColumn(GridViewColumn column)
{
    if (double.IsNaN(column.Width))
    {
        column.Width = column.ActualWidth;
    }

    column.Width = double.NaN;
}
于 2010-05-24T18:23:47.847 に答える
0

いいえ。これ以上エレガントなソリューションはないと思います。

于 2010-05-28T22:29:09.573 に答える