2011-05-13 73 views
1

我想在Silverlight中配置一個ListBox來獲得包裝和虛擬化。silverlight 4:列表框與包裝和虛擬化

這是我目前的解決方案,使用Silverlight工具包WrapPanel:

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
     ItemsSource="{Binding}"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <toolkit:WrapPanel/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <my:MyControl/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

此代碼得到正確的包裝。然而,虛擬化被禁用:如果我向MyControl的構造函數添加日誌,我可以看到爲集合中的項目創建了一個控件,即使它們不可見。這對我來說是一個問題,因爲要顯示的對象和控件很重,並佔用太多內存。

+0

您是否找到了解決方案? – SamChen 2012-05-03 00:40:28

+0

我已經實現了一個簡單的虛擬包裝面板:在我的情況下,所有的項目總是有相同的大小,所以實現更簡單。 – olorin 2012-05-03 09:17:29

+0

你能分享你的實施嗎? – SamChen 2012-05-04 02:36:04

回答

0

我不知道Silverlight的免費虛擬化WrapPanel,但是我找到了一個WPF。您可以將其轉換爲Silverlight。傳統上,創建虛擬化面板非常困難。

Virtualizing WrapPanel for Silverlight ($900?)

Virtualizing WrapPanel for WPF

+1

是的,你是正確的創建虛擬化面板似乎很難。但實際上,我在一個更簡單的情況下,因爲我的所有項目都具有完全相同的大小(加載項目之前已知)。你知道一個虛擬化的「WrapPanel」強制所有的項目相同的大小? – olorin 2011-05-24 08:20:52

0

在這個時候,可以做到這一點的唯一一個(可商購)是由www.binarymission.co.uk出售的虛擬化渦卷面板控制

它還確實定製分組,組頭渲染等,以及虛擬化+包裝。 這是昂貴的,但值得每一分錢,並解決了我的要求。 Mine是一個在線相冊應用程序,並且該應用程序需要全部控件,其餘部分都是我們放在一起的簡單用戶界面,我們可以立即恢復控制成本:) 他們的支持也非常出色。回覆幾乎在10分鐘之內;)你通常不期望從第三方控制供應商那裏得到的東西,但我估計他們的價格肯定會照顧到這一點:)

Joe我修復了你在那裏的鏈接。 等到某人同行評審它,它贏得了; T爲所有可見的,所以這裏是固定鏈接: Binarymission Virtualizing Wrap Panel for WPF & SL

+0

感謝您的意見,此組件值得一試。 – olorin 2011-08-25 06:53:05

+0

那裏只有一個音符。由於該控件被大量混淆,如果使用任何跟蹤工具(例如Intellitrace)使用該控件運行應用程序,則可能會看到加載應用程序時出錯(取決於跟蹤的深度),因爲該控件不希望被跟蹤到。我在評估過程中關閉了Intellitrace,並且它的魔法絕對正常。一旦我購買了它,我要求能夠追蹤我的應用程序的幫助,並且令我驚訝的是,該公司向我發送了一個跟蹤友好的程序集(可能模糊程度很低?),所以我可以使用該DLL跟蹤該應用程序。非常好的人! – CoolApp 2011-08-25 15:38:18