0

ユーザーコントロールを表示する単一のテンプレート列を含むSilverlightDataGridがあります。ユーザーコントロールには、処理を表すプログレスバーがあり、処理が完了すると、アニメーションによってプログレスバーが非表示になり、完成したラベルが表示されます。

データグリッドがそれ自体を再描画しないように見える2つのインスタンスがあります。

まず、ユーザーが多くのスクロールを行うと、データグリッドはユーザーコントロールが表示されたときにアニメーションを再描画することから始まり、最終的に何も再描画しないポイントに到達します。

次に、ポップアップを表示するクリックイベントがユーザーコントロールにあります。ポップアップが閉じられると、ユーザーコントロールはそれ自体を適切に再描画できなくなります。

この動作が発生する理由とその回避方法に関するアイデアはありますか?

4

2 に答える 2

1

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

于 2009-08-31T00:08:59.007 に答える
0

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

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

于 2009-08-09T04:48:16.017 に答える