我有一個UserControl
需要包含頂部的一堆控件和它們下面的LongListSelector
。整個UserControl
的總高度可能(並且幾乎總是)會超過屏幕高度,在這種情況下,整個UserControl
必須可滾動。當在ScrollViewer中包含LongListSelector性能非常差
我目前的設置如下:
<staff:UserContentControl
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:MyApp.Controls"
xmlns:staff="clr-namespace:MyApp.Helpers"
x:Class="MyApp.Controls.RemoteHomePage"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}">
<ScrollViewer>
<ScrollViewer.Content>
<StackPanel>
<TextBlock Txt="Text1" Sign="@" />
<TextBlock Txt="Text2" Sign="#" />
<controls:Divider />
<TextBlock Txt="Text3" Sign="~" />
<TextBlock Txt="Text4" Sign="~" />
<controls:TextDivider Text="Divider text" />
<phone:LongListSelector ItemsSource="{Binding Items}">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" />
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
</StackPanel>
</ScrollViewer.Content>
</ScrollViewer>
</staff:UserContentControl>
該解決方案滿足我的需求,但也有一個很大的問題:目前LongListSelector
所花的時間真的很多,當它包含的項目量是相當大的負荷。處理300個項目需要8秒,並且在此期間整個UI都被阻止。即使有顯著較大的物品的數量幾乎立即
<staff:UserContentControl
...>
<phone:LongListSelector ItemsSource="{Binding Items}">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" />
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
</staff:UserContentControl>
然後LongListSelector
負載:如果我刪除一切,但LongListSelector
,像這樣。但顯然,我需要上面的其他控件,所以問題是我能做些什麼來解決這個問題?
(另外相關的問題:我很擔心LongListSelector
內ScrollViewer
可能導致雙滾動或類似的東西,但最終一切都變成了在這方面就好了,我不知道,如果LongListSelector
莫名其妙地知道,這是內部的其他滾動。控制或者是否有其他事情發生,我不知道,有些解釋爲什麼它能正常工作,雖然速度很慢,但是非常感謝。)
你做錯了。 –
@MathiasLykkegaardLorenzen :) – Anton