0

カスタム コントロールを含む Silverlight コントロールに DataGrid があります。これらのカスタム コントロールはグリッドの外でも使用され、完全に機能します。ただし、グリッド内で使用すると、フォーカスが失われたとき (つまり、別のセルに移動したとき) にリセットされるように見えます。

それが私のカスタム コントロールではないことをテストするために、オートコンプリート ボックスを含む列を追加しました。ボックスに入力し、タブで次の列に移動すると、ボックスがクリアされます。

デバッグ時に、フォーカスを失った後にコントロールがロードされたイベントが呼び出されていることがわかります。これは、次のフィールドに移動するときにリロード/再作成されていることを確認します!? 何らかの理由で変更をグリッドにコミットしていないだけですか?

XAMLの例(非常に基本的で、ここで奇妙なことは何もありません)

        <sdk:DataGridTemplateColumn Header="Description">
             <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                            <sdk:AutoCompleteBox Name="Description" Width="100" />
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
4

1 に答える 1

1

これは完全に正常です。CellTemplate はセルがレンダリングされるときに使用され、仮想化がオンになっている場合、行がビューからスクロールされると破棄されます。

CellEditingTemplate は、グリッド セルが編集モードになるときに使用されます。この時点で、編集コントロールが作成されます。IOW 編集コントロールはオンデマンドで作成されます。セルに焦点を当てるだけでは、セル自体を編集モードにするのに十分ではありません。

于 2012-07-05T10:53:52.090 に答える