私は WPF アプリケーションを作成しています。データ グリッドがあり、すべての列の幅が「自動」に設定されています。テーブルのスクロールを開始すると、列の一部が拡大し始めます。最初の列の最長データ (スクロール時に列を展開せずに)?
2 に答える
これは、の仮想化によるものDataGridです。表示されているアイテムのみがレンダリングされ、スクロールの場合はコントロールが再利用されます (アクティブにしている場合)。最長の要素がまだレンダリングされていないため、幅は正しくありません。リスト コントロールは非常にうまく機能しますが、多くの項目をバインドすることもできます。
2つのオプションがあると思います
表示するアイテムが多くない場合は、仮想化をオフにすることが適切な解決策である可能性があります。私はそれを試していないことを認めなければならないので、保証はありません. でオフにできます
<DataGrid VirtualizingStackPanel.IsVirtualizing="False"/>。VirtualizationStackPanelplsの詳細については、こちらをご覧ください。別の解決策が考えられます
TextTrimming。テキストが長すぎる場合に表示TextBlocksできます。Ellipsesそのため、カスタム データ テンプレートを列に割り当てて、以下をコンテンツとして配置する必要があります<TextBlock Text="{Binding}" TextTrimming="WordEllipsis"/>。CellEditingTemplateユーザーが値を編集できるようにする場合は、 customer も指定する必要があることに注意してください。詳細については、こちらTextTrimmingをご覧ください。全体がどのように機能するかについては、こちらをご覧ください。DataTemplateDataGrids
表示されたデータがより多くのスペースを必要とするときに拡張するwpfの列幅を設定するとAuto、この作業は自動的に行われます。