1
要在這裏展示的問題是我的代碼隱藏WP8中的LongListSelector的scrollTo函數的性能滯後?
public partial class MainPage : PhoneApplicationPage
{
ObservableCollection<ABC> listTest = new ObservableCollection<ABC>();
// Constructor
public MainPage()
{
InitializeComponent();
for (int i = 0; i < 50; i++)
{
ABC conv = new ABC(string.Format("Test:{0}", i));
listTest.Add(conv);
}
testLls.ItemsSource = listTest;
}
private void Button_Tap_1(object sender, System.Windows.Input.GestureEventArgs e)
{
testLls.ScrollTo(listTest[listTest.Count - 1]);
}
private void TitlePanel_Tap_1(object sender, System.Windows.Input.GestureEventArgs e)
{
Stopwatch st = Stopwatch.StartNew();
testLls.ScrollTo(listTest[listTest.Count - 1]);
st.Stop();
Debug.WriteLine("tttt:", st.ElapsedMilliseconds);
}
class ABC
{
private string _name;
public ABC(string aa)
{
this._name = aa;
}
public string Name
{
get
{
return _name;
}
}
public Visibility GroupMemberVisibility
{
get
{
return Visibility.Collapsed;
}
}
}
}
XAML代碼
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28" Tap="TitlePanel_Tap_1">
<TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
<TextBlock Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<phone:LongListSelector Name="testLls" VirtualizingStackPanel.VirtualizationMode="Standard" >
<phone:LongListSelector.ItemTemplate>
<DataTemplate x:Name="dtRecievedBubbleText" >
<Grid x:Name="LayoutRoot" Background="Transparent" Margin="24 0 0 14" HorizontalAlignment="Left">
<Grid.RowDefinitions>
<RowDefinition Height="14" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Rectangle Grid.RowSpan="3" Fill="{Binding BubbleBackGroundColor}" />
<TextBlock Text="test" Visibility="{Binding GroupMemberVisibility}" FontSize="22" FontFamily="Segoe WP Semibold" Margin="12, 12, 0, 0" />
<TextBlock Grid.Row="2" Text="{Binding Name}" HorizontalAlignment="Right" Margin="0,0,12,6" FontSize="18" />
</Grid>
</Grid>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
</Grid>
碼輕敲頭的一長串選擇方含的elemnts滾動至底部。當元素的值從30-50-100個元素變化時,觀察到的時間是20ms,744ms,815ms。測試是用諾基亞Lumia 620完成的。
在本示例中,項目模板非常簡單,但在實際場景中我的項目爲templates are much more complex
。因此在這種情況下所花的時間是1753ms for 100 elements
。
爲什麼這麼龐大time difference
。 Can this be improved
以任何方式?
有沒有人注意到了這一點?