4

DataGrid が IsReadOnly = FALSE に設定されている場合、その列の ComboBox が空のセルをダブルクリックすることによってのみ表示されるのはなぜですか ???

 <DataGridComboBoxColumn Width="*" IsReadOnly="False" Header="test" />

DataTemplateColumn の使用はいつものように機能します...その DataGridComboBoxColumn の何が問題なのですか?

作品:

<DataGridTemplateColumn Header="Schoolclass">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox Background="Blue" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
4

1 に答える 1

10

すべての組み込み DataGridColumns には 2 つのスタイルがあります。1 つはセルが編集モードでない場合、もう 1 つはセルが編集モードの場合です。通常、非編集モードでは、期待する実際のコントロール (ComboBox、TextBox など) ではなく、単にテキスト ブロックが表示されます。セルの編集を開始すると、テキストブロックが適切なコントロールに置き換えられます。データグリッドが IsReadOnly = true に設定されている場合、それはセルが編集モードに移行しないことを意味し、それが表示されている動作です。

DataGridTemplateColumn を作成するとき、組み込みのすべてのデータグリッド ロジックを本質的に置き換えます。たとえば、データグリッドが読み取り専用のときにテンプレート化された列を読み取り専用にしたい場合は、2 つの値を手動でバインドする必要があります。また、組み込みの列 (セルが編集モードでない場合のテキストブロック) と同じ動作を得たい場合は、トリガーを使用して適切なコントロール テンプレートを提供する必要があります。

また、組み込みの列 (DataGridCheckBoxColumn など) を使用していて、そのための ElmentStyle を指定した場合 (たとえば、checkBox を中央に配置する場合)、データグリッドが IsReadOnly = true に設定されていても、列のセルはすべて編集可能です。これは、ElmentStyle を指定すると、データグリッドが読み取り専用のときにチェックボックスを読み取り専用にするロジックを含む組み込みのスタイルを置き換えるために発生します。

于 2010-07-17T08:15:36.840 に答える