Binding ソースが更新されたときに、リストビューの gridviewcolumns をコンテンツに合わせて自動サイズ変更しようとしています (viewmodel の observablecollection)。
リストビューは正常に表示されますが、コレクションを更新/更新すると機能しません。これは私がこれまで試している解決策です:
XAML:
<ListView x:Name="ListView" ItemsSource="{Binding Collection, NotifyOnSourceUpdated=True}" SourceUpdated="ListView_SourceUpdated">
<ListView.View>
<GridView>
<GridViewColumn Width="Auto" Header="Test" DisplayMemberBinding={Binding Test}" />
</GridView>
</ListView.View>
</ListView>
コードビハインド:
private void requestsListView_SourceUpdated(object sender, DataTransferEventArgs e)
{
GridView gv = requestsListView.View as GridView;
if (gv != null)
{
foreach (var c in gv.Columns)
{
if (double.IsNaN(c.Width))
{
c.Width = c.ActualWidth;
}
c.Width = double.NaN;
}
}
}
私が知る限り、SourceUpdated イベントは決して発生しません。これがデータ コンテキストが ViewModel に設定されているためかどうかはわかりません。VM から ListView を操作する方法がわからない。
ViewModel を使用してこれを行うためのより良い方法はありますか? まだ新しく、MVVM を学習しようとしています。