1

同様の要件を持ついくつかの投稿を確認しましたが、完全に機能するソリューションはまだ見つかりません。

いくつかの列を持つ 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 に変更されます。

私は何を間違っていますか?ありがとう。

編集:

私が見たいくつかの投稿

4

0 に答える 0