3

作業中のプロジェクトのために Silverlight アプリケーションを WPF に移植していますが、表面的な小さな問題に遭遇しました。Silverlight アプリケーションでは、Datagrid の ItemsSource は、最初は空の ObservableCollection です。アプリケーションを最初にロードすると、DataGrid 自体が空であっても、列ヘッダーが表示されます。私は今、WPF アプリケーションで同じことを達成しようとしています。ObservableCollection と Datagrid はどちらも同じですが、Datagrid に行を追加したときにのみ列ヘッダーが表示されるようになりました。私の Datagrid の XAML は次のとおりです。

<DataGrid ColumnWidth="196" GridLinesVisibility="All"
                        AutoGenerateColumns="True" IsReadOnly="True" HorizontalAlignment="Center"
                        Height="375" Width="775" ItemsSource="{Binding source}"
                        RowBackground="#A5BACA" AlternatingRowBackground="LightGray"
                        VerticalAlignment="Center" Name="documentsDG"
                        FontWeight="Normal" FontSize="13" HeadersVisibility="Column"
                        Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="4">
</DataGrid>

私が言ったように、行の追加と削除はうまくいきます.Datagridにデータがなくても列ヘッダーを表示する方法を見つけたいだけです. また、Datagrid の空の行でアプリケーションを起動しようとしましたが、これにより列ヘッダーが表示されますが、乱雑に見えます。アプリケーション内からその行を削除すると、列ヘッダーは残りますが、ウィンドウの読み込み時に削除すると消えます。

ですから、どんな助けでも大歓迎です。私の側でさらに何か必要な場合はお知らせください。

4

2 に答える 2

3

列を自動生成しています。列を手動で定義すると、コレクションが空の場合でも列が表示されます。

参照: WPF Toolkit Datagrid ヘッダーと空のソース

于 2012-06-28T19:20:15.807 に答える
0

AutoGenerateColumns="True" が表示されていますが、Grid 列を指定していません。あなたが説明した動作から、グリッドのコンテキストが設定されると、コレクション内の基になるオブジェクト タイプの属性を読み取ることができるようです。それ以前は、グリッドはこれらの属性を認識していないため、列を生成できません。

ここでは無料のランチはありません。コンテキストにデータを入力する前に表示したい場合は、xaml でグリッド列を指定する必要があります。

于 2012-07-03T17:15:39.743 に答える