wpf datagridcomboboxcolumnのコンボボックスは、datagridがisreadonly = falseを持っている場合にのみ表示されます

StackOverflow https://stackoverflow.com/questions/3070455

質問

DatagridがIsReadonly = falseに設定されているのに、空のセルのダブルクリックを介してその列のコンボボックスが見えるのはなぜですか?

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

DataTemplateColumnを使用すると、いつものように機能します...そのdatagridcomboboxcolumnの何が問題なのですか?

作品:

<DataGridTemplateColumn Header="Schoolclass">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox Background="Blue" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
役に立ちましたか?

解決

すべてのBuiltin DatagridColumnsには2つのスタイルがあります。セルが編集モードではなく、セルが編集モードにある場合は1つです。通常、非編集モードは、実際のコントロール(コンボボックス、テキストボックスなど)ではなく、単にテキストブロックを表示します。また、セルの編集を開始すると、テキストブロックは適切なコントロールに置き換えられます。 DatagridがIsreadonly = trueに設定されている場合、それはセルが編集モードに行くことはなく、それがあなたが見ている動作です。

DatagridTemplateColumnを作成するときは、組み込まれたすべてのDatagridロジックをすべて置き換えます。例として、Datagridが読み取られたときにテンプレート列を読み取りたい場合は、2つの値を手動で結合する必要があります。また、ビルトイン列と同じ動作を取得したい場合(セルが編集モードにない場合はテキストブロック)、トリガーを使用して適切なControlTemplatesを提供する必要があります。

また、組み込みの列(DatagridCheckboxColumnなど)を使用していて、それのためにelmentStyleを使用している場合(たとえば、チェックボックスの中央にある)、列のセルはすべて編集可能です。これは、ElmentStyleを指定すると、Datagridが読み取られたときにチェックボックスを読み取るためのロジックを含むビルトインスタイルを置き換えるためです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top