私は、WPF
Datagrid
初期段階で100列ヘッダーをに割り当てますがDatagrid
、すべての列ヘッダーを表示するために水平スクロールすることはできません。
DataGrid
行がなく、ItemSource
nullです。列ヘッダーのみ(行なし)の場合、水平スクロールを実現するにはどうすればよいですか。
ItemSource
列ヘッダーのみがあり、行がないDataTableにバインドしました。
このシナリオでスクロールするにはどうすればよいですか。
これが私にとってうまくいったこの問題の回避策です。アイテムがない場合は、をに配置DataGrid
し、 をScrollViewer
のDataTrigger
に設定するだけです。HorizontalScrollBarVisibility
ScrollViewer
Visible
DataGrid
<ScrollViewer VerticalScrollBarVisibility="Disabled">
<ScrollViewer.Style>
<Style TargetType="ScrollViewer">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=dataGrid, Path=HasItems}" Value="False">
<Setter Property="HorizontalScrollBarVisibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ScrollViewer.Style>
<DataGrid Name="dataGrid"/>
</ScrollViewer>
残念ながら、DataGrid のデフォルト スタイルでは不可能です。テンプレートをオーバーライドし、メイン グリッドから派生したカスタム グリッドを作成する必要があります。ここで詳細を確認できます。
ArsenMkrt が言ったように、それは不可能です。しかし、行を追加できると思いますDataTable
が、その後、対応するDatagridRow
の可視性を非表示に設定できます。
実際のデータが入力されている場合DataTable
は、DataTable.Rows をクリアするだけです。
あなたはそうしない。あなたは行を持っている必要があります。
ItemsSource を変更して、デフォルトを null にしないようにします。
行の追加を許可する場合、デフォルトで空のリストにすることができます。
行の追加を許可しない場合は、デフォルトで 1 つの項目のリストにする必要があります。
List<object> olist = new List<object>();
olist.add(new object());