2009-07-30 82 views
0

我有一個Silverlight DataGrid,其中包含顯示用戶控件的單個模板列。用戶控件有一個進度條來表示處理過程,當處理完成時,動畫會隱藏進度條並顯示完成的標籤。Silverlight DataGrid重繪問題

有兩個實例中,數據網格似乎不重繪自己:

首先, 當用戶做了很多,然後滾動DataGrid的將被重新繪製動畫的開始,當用戶控件映入眼簾並最終達到不重繪任何東西的地步。

第二個, 在用戶控件中有一個點擊事件,顯示一個彈出窗口。當彈出窗口關閉時,再次usercontrol無法正確重繪本身。

任何關於爲什麼會發生這種行爲的方法和解決方法?

回答

1

上一個答案是正確的。我發現如果你想讓你的任何控件正常工作,你有時必須正確處理Loading_Row和Unloading_Row事件。在我的情況下,控件屬性實際上綁定到一個對象才能最好地工作。如果您嘗試依賴動畫和可見性等,您會看到奇怪的行爲,但是如果將進度條綁定到維護每個項目後臺進度的對象,那麼每次顯示該行時都會重新綁定和重繪。

+0

當用戶點擊網格內部時,你有沒有奇怪的行爲?點擊似乎也會調用一個「重繪」,它可以強制重繪動畫。 – t3rse 2009-08-31 22:13:41

0

您必須明白DataGrid沒有控件的一個實例用於網格中的每一行。數據源可能有數百萬行,而網格不需要更多的控件實例,而不需要在屏幕上顯示。這意味着,例如,當您滾動時,它不會顯示以前不可見的控件實例;它只是分配當前可見的控件所需的任何值,以便爲當前滾動位置進行正確的顯示。

我不知道是否有解決方法。