データバインドされた ListView を持つ WPF アプリケーションを作成しています。アプリケーションをロードするとき、ListViewColumns の幅は自動サイズ変更されますが、項目を追加または変更するときは自動サイズ変更されません。xaml と VB コードの両方で列の幅を auto、-1 または -2 に設定して、リストビューを更新しようとしました。これはxamlコードです:
<ListView x:Name="lsvPersons" Margin="5,5,5,35" ItemsSource="{Binding Persons}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name"/>
<GridViewColumn DisplayMemberBinding="{Binding Gender}" Header="Gender"/>
<GridViewColumn DisplayMemberBinding="{Binding Age}" Header="Age"/>
</GridView>
</ListView.View>
</ListView>
<Button x:Name="btnAddPerson" Content="Add" Height="25" Margin="0,0,200,5" Width="80"/>
バインディングは、SQL データベースから Person.getPersons を使用して人物を取得するコントローラーで機能します。
Private oController As New MainController()
Public Sub New()
MyBase.New()
Me.InitializeComponent()
Me.DataContext = oController
End Sub
ボタンを押すと、人を追加するためのウィンドウが開きます。ウィンドウが閉じられた後、次のコードを使用してアイテムがリストビューに追加され、リストビュー内のアイテムが更新されます。
lsvPersons.ItemsSource = Person.getPersons()
では、アイテムが追加または編集されたときにリストビューの列のサイズを自動変更するにはどうすればよいでしょうか?