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