2010-04-28 57 views
1

我有這樣的情況 - 我想建立時間軸控制。所以我有它的UserControl和ItemsControl(每行代表一個人)。 ItemsControl包含另一個ItemsControl作爲ItemsControl.ItemTemplate - 它顯示了例如按事件日期安排的人的事件。Silverlight - 如何從不可見的數據綁定用戶控件渲染圖像?

因此,它看起來像某些網格日期列標題和例如人作爲行標題。 ........................ |。 2010.01.01 ..... 2010年1月2日 ..... 2010年1月3日
亞當·斯密 .... | ...... [某些事件#1] .. ... [一些事件#2] ......

約翰道爾 ....... | ... [某事件#3] ..... [某事件#4 ] .........

我可以有很多人(ItemsControl#1 - 100-200項目)和很多事件發生在某天(每人1-10-30個事件一天)

問題是,當用戶滾動ItemsControl#1 /#2時,它發生toooo sloooooowwww由於很多元素應該在一次渲染(因爲我有例如一些文本框和其他元素描述特定事件)

問題1 - 我該如何改進它?可能有人知道更好的方法來建立這樣的用戶控制?我不得不提,我使用自定義的虛擬面板的基礎上,在互聯網的某個地方發現了一些自定義的虛擬面板實現...

問題2 - 我想使圖像與WriteableBitmap的幫助和渲染數據綁定控制圖像和顯示圖像,而不是很多的元素。問題是我試圖渲染不可見的數據綁定控件(在代碼後面創建),並且它的actualWidth/Height等於零(因此沒有渲染),即使我使用Dispatcher.BeginInvoke(()=> {.. 。}方法我怎樣才能解決這個問題

非常感謝您的幫助

回答

2

關於問題#1:?!嵌套ItemsControl的虛擬化是棘手的問題是,即使在最外面的控件支持虛擬化技術,該內部控件以無限長度進行度量,從而實例化所有子項,而不是將ItemsControl託管在另一個子項中,而是將所有數據合併到同一個列表中,使用樣式來模擬層次結構,或者查找支持嵌套虛擬化的商業數據網格控件。

+0

非常感謝 - 我會試試! – MagicMax 2010-04-30 19:40:47