4

ListViewWPF の残りの領域を特定の列で埋めたいと思います。

私はグーグルで調べていて、次の解決策を見つけました:

<GridViewColumn Header="Error" DisplayMemberBinding="{Binding ErrorDescription}" 
   Width="{Binding RelativeSource={RelativeSource FindAncestor, 
   AncestorType={x:Type ListView}}, Converter={StaticResource WidtConvert}} />

そしてコンバーター:

public object Convert(object value, Type targetType, object parameter,
                      System.Globalization.CultureInfo culture)
{
  ListView l = value as ListView;
  GridView g = l.View as GridView;
  double total = 0;
  for (int i = 0; i < g.Columns.Count - 1; i++)
  {
    total += g.Columns[i].ActualWidth;
  }
  return (l.ActualWidth - total);
}

しかし、問題は、コンバーターが呼び出された時点で、を含むすべての列ListView.ActualWidthが 0 であることです。

Listview_SizeChangedたとえば、などでコードビハインドを使用したくありません。

4

1 に答える 1

0

ListView コントロールの Loaded イベントでコード ビハインドから Width プロパティにコンバーターをバインドできます。その場合、コンバーターは、コントロールが完全に読み込まれた後に起動され、実際の幅がコンバーターに転送されます。

于 2013-01-23T10:50:51.400 に答える