2009-07-30 26 views
0

ユーザーコントロールを表示する1つのテンプレート列を含むSilverlight DataGridがあります。ユーザーコントロールには処理を表すプログレスバーがあり、処理が完了するとアニメーションはプログレスバーを隠し、完成したラベルを表示します。Silverlight DataGrid再描画の問題

まず、 は、ユーザーがデータグリッドをスクロールの多くは、アニメーションを再描画することから始めますない場合、ユーザーコントロールが見えてくるとき:

は、DataGrid自体を再描画しないように思われるで2件のインスタンスがあります最終的には何も再描画しないようになります。

第2, usercontrolにポップアップを表示するクリックイベントがあります。ポップアップが閉じられると、再びユーザーコントロールが正しく再描画されません。

この現象が発生する理由とその回避方法については、どのような考えですか?

答えて

1

前の回答は正しいです。あなたのコントロールが適切に動作するようにするには、Load_RowイベントとUnloading_Rowイベントを適切に処理する必要があることがあります。私の場合、コントロールのプロパティを実際にオブジェクトにバインドして、最も効果的に動作させることができます。アニメーションや可視性などに頼ると、奇妙な動作が見られますが、シーンの各項目の進行状況を維持しているオブジェクトにプログレスバーをバインドすると、行が表示されるたびに再バインドされて再描画されます。

+0

ユーザーがグリッド内をクリックしても奇妙な動作をしましたか?クリックすると、アニメーションの再描画も強制的に実行できる「再描画」が呼び出されるようです。 – t3rse

0

グリッド内のすべての行に対して、DataGridにコントロールのインスタンスが1つ含まれていないことを理解しておく必要があります。データソースには何百万もの行がありますが、グリッドは画面上に収まるよりも多くのコントロールのインスタンスを必要としません。これは、たとえば、スクロールすると、以前は表示されなかったコントロールのインスタンスが表示されないことを意味します。現在表示されているコントロールを、現在のスクロール位置に正しく表示するために必要な値を割り当てます。

回避策があるかどうかわかりません。