4

私は、WPF Datagrid初期段階で100列ヘッダーをに割り当てますがDatagrid、すべての列ヘッダーを表示するために水平スクロールすることはできません。

DataGrid行がなく、ItemSourcenullです。列ヘッダーのみ(行なし)の場合、水平スクロールを実現するにはどうすればよいですか。

ItemSource列ヘッダーのみがあり、行がないDataTableにバインドしました。

このシナリオでスクロールするにはどうすればよいですか。

4

4 に答える 4

8

これが私にとってうまくいったこの問題の回避策です。アイテムがない場合は、をに配置DataGridし、 をScrollViewerDataTriggerに設定するだけです。HorizontalScrollBarVisibilityScrollViewerVisibleDataGrid

<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>
于 2014-01-28T08:58:07.627 に答える
2

残念ながら、DataGrid のデフォルト スタイルでは不可能です。テンプレートをオーバーライドし、メイン グリッドから派生したカスタム グリッドを作成する必要があります。ここで詳細を確認できます。

于 2012-11-30T18:17:43.170 に答える
0

ArsenMkrt が言ったように、それは不可能です。しかし、行を追加できると思いますDataTableが、その後、対応するDatagridRowの可視性を非表示に設定できます。

実際のデータが入力されている場合DataTableは、DataTable.Rows をクリアするだけです。

于 2012-12-01T08:25:37.170 に答える
-1

あなたはそうしない。あなたは行を持っている必要があります。

ItemsSource を変更して、デフォルトを null にしないようにします。

行の追加を許可する場合、デフォルトで空のリストにすることができます。

行の追加を許可しない場合は、デフォルトで 1 つの項目のリストにする必要があります。

List<object> olist = new List<object>();
olist.add(new object());
于 2012-11-30T18:24:26.963 に答える