マイUI:私のUIのGridViewColumn幅調整
<ListView Name="persons" SelectionChanged="persons_SelectionChanged">
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="auto"/>
<GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" Width="auto"/>
</GridView>
</ListView.View>
</ListView>
分離コード:
internal void Update(IEnumerable<Person> pers)
{
this.persons.ItemsSource = null;
this.persons.ItemsSource = pers;
UpdateLayout();
}
マイエンティティ:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
GridViewColumnsがGridViewColumn-ヘッダーの幅を持っています。長い名前のPersonでUpdate()を呼び出す場合でも。列のサイズが変更されません。
a)最長の名前の長さに値x(私は列の最大幅を指定したい)を超えないように、自動的に "名前"列のサイズを変更できます?
b)「年齢」 - 列がコントロールの最後のスペースを塗りつぶすように指定できます(グリッドビューの列がコントロールの幅全体を使用するように)。
これはかなり古いですが、強調したいのは、 'ColumnWidth'修正のタイミングがどれほど重要で、正しく適用されたときに本当にうまくいくかです。 GridViewコンテナが読み込まれ、表示されていることを確認してください。私は、GridViewが仮想化する親コントロールの一部であったエクスパンダの中に配置されているという非常に厄介な組み合わせを持っていました。つまり、オフスクリーンでサイズを変更すると幅がゼロになり、テンプレートが異なるデータ用にリサイクルされたときにアイテムが変更される可能性があります。今私は私の解決策に満足しています。 – grek40