同様の要件を持ついくつかの投稿を確認しましたが、完全に機能するソリューションはまだ見つかりません。
いくつかの列を持つ ListView に GridView があります
<ListView x:Name="TheList" DockPanel.Dock="Top"
ItemsSource="{Binding Itemlist}"
SelectionMode="Extended">
<ListView.View>
<GridView>
....
<GridViewColumn x:Name="valueColumn" Header="Value" DisplayMemberBinding="{Binding ItemValue}" Width="150"/>
</GridView>
</ListView.View>
</ListView>
モデルとサブをモデルのプロパティ変更に設定します
_viewModel = new MyModel();
DataContext = _viewModel;
_viewModel.ItemValueChanged += RunResizeLogic; //ItemValueChanged gets emitted when the property changes
そして、私が見つけたいくつかの解決策に基づいて、列のサイズを変更しようとしました
private void RunResizeLogic(object sender, EventArgs e)
{
ResizeGridViewColumn(valueColumn);
}
private void ResizeGridViewColumn(GridViewColumn col)
{
Dispatcher.Invoke(DispatcherPriority.Normal,
new Action(() =>
{
if (double.IsNaN(col.Width))
{
col.Width = col.ActualWidth;
}
col.Width = double.NaN;
}));
}
私の ItemValue が変更されたときにサイズ変更ロジックが呼び出されますが、列は ItemValue が再び変更されたときにのみサイズ変更されます。
したがって、現在のサイズが 5 の場合、ItemValue のサイズは 10 に変更され、ロジックは ActualWidth==5 で実行され、列は同じサイズ (5) のままです。ItemValue のサイズが再び 2 に変更され、ロジックが ActualWidth==2 を実行し、列のサイズが 10 に変更されます。
私は何を間違っていますか?ありがとう。
編集:
私が見たいくつかの投稿