の.Net 4 WPFのDataGrid MVVMWPFデータグリッドに新しい行にセルを集中する方法
ユーザーがクリックはのviewmodel上でコマンドをトリガボタンを追加します。 viewmodelコマンドexecuteで、グリッドがバインドされているviewmodelのviewcollectionに新しいオブジェクトを追加します。新しい行がグリッドに表示されます。しかし、私はまた、その新しい行の最初の編集可能なセルにフォーカスを送りたいと思います。
私はさらに「mated」mvvmで、新しい行をいつフォーカスするかを知るために、ビューが聴いているビューモデルにイベントを追加しました。
私は検索しましたが、運はありません。私はこの出くわしたとき、私は希望に満ちた:
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/63974f4f-d9ee-45af-8499-42f29cbc22ae
につながるしかし、他の人が報告していると誰も答えなかった問題は、仮想化行動に対処する方法である
Datagrid Set focus on newly added row
グリッドの新しく追加された行はまだ作成されていません。そのため、GetCellsの呼び出しは頻繁に失敗します。また、ScrollIntoViewが必要な場合は、失敗する可能性がさらに高くなります。
私は、運行なしのLoadingRowとRequestBringIntoViewを含む1トンのイベントに夢中になりました。私がフックするイベントに応じて、私はそのセルへの参照を取得することができました。しかし、 "コンテンツの生成が進行中のときにStartAtを呼び出せません"というエラーが表示されます。しかし、私はItemContainerGeneratorの状態をチェックして、セルのBeginEditを呼び出したときにContainersGeneratedでした。ここで
???あなたは私の質問を読みましたか?私はすでにそのページへのリンクを含んでいて、GetCellの問題は、セルがまだ作成されていないと動作しないということです。 – happyfirst
ScrollIntoViewの前にdg.UpdateLayout()を呼び出そうとします –
それは動作します!!!!私は以前、関数呼び出し、優先度の標準を "ディスパッチ"しなければならない修正を発見しました。しかし、これまでのところ、ScrollIntoViewが信頼できると思われる前にUpdateLayoutを呼び出すと、ありがとう! – happyfirst