編集可能である必要がある値のデータグリッドを使用してMVVMWPFアプリを作成しています。値の意味は他のデータによって異なるため、値の種類によって異なるテンプレートを使用して編集するためのユーザーコントロールを作成しました。つまり、テキストボックス、コンボボックス、またはデータベースにリンクして可能な値を取得する他のいくつかの社内コントロールの1つとして表示される場合があります。これは私が使用したxamlです。
<DataGridTemplateColumn Header="Value">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<local:ValueViewingControl Value="{Binding Value}" ValueType="{Binding SettingValueType}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<local:ValueEditingControl Value="{Binding Value,Mode=TwoWay}" ValueType="{Binding SettingValueType}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
問題は、編集モードになったら、ValueEditingControlのいずれかの部分を次にクリックすると、セルが編集モードを終了し、実際に何かを実行する前にValueViewingControlに戻ることです。私はそれがその失われた焦点を考えている細胞と関係があると思います。実際にタブをクリックするかセルからクリックするまで、セルを編集モードに保つ方法を知っている人はいますか?
[編集]もう少しテストすると、編集コントロールとしてテキストボックスまたは標準のコンボボックスを使用すると、期待どおりに機能することがわかります。これにより、ポップアップを組み込んだ、私が作成したカスタムコントロールの実装だと思います。編集コントロールの一部であるポップアップを選択すると、データグリッドセルを終了したと見なされ、編集モードが終了します。フォーカスの目的でポップアップが内部にあることをデータグリッドセルに納得させるにはどうすればよいですか?可能である必要があります。そうでない場合、コンボボックスは機能しません。