我目前正在为Windows手机创建一个应用程序。 那么在“主页”上你几乎没有对你的概述 “字符”。
所有字符都存储在Singleton配置类中。
要生成概述,我只需使用带有Datatemplate的ListBox,如下所示:
<ListBox x:Name="ListBox_Characters" Margin="0,0,-12,0" ItemsSource="{Binding Source={StaticResource Config},Path=Instance.Characters}">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Style="{StaticResource CharacterButton}" Click="Button_Click_2">
<StackPanel Orientation="Horizontal" Margin="0,0,0,17">
<Image Source="{Binding ShowPortrait}" Height="110" Width="110" Margin="0,15,0,0" />
<StackPanel Width="311">
<TextBlock Text="{Binding Name}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
<TextBlock Text="{Binding ShowCurrentlyTraining}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
<ProgressBar Value="{Binding CurrentlyTrainingPercentage}" IsIndeterminate="{Binding CurrentlyUpdating}" />
<Grid>
<TextBlock Text="{Binding ShowSPs}" TextWrapping="Wrap" HorizontalAlignment="Left" Margin="12,0,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
<TextBlock Grid.Column="2" Text="{Binding ShowCurrentlyTrainingPercentage}" HorizontalAlignment="Right" TextWrapping="Wrap" Margin="12,0,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</Grid>
<TextBlock Text="{Binding ShowWealth}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</StackPanel>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在我添加了一个页面,以显示更多细节。通过单击上面列表框中的一个字符,可以访问该页面。
要知道“what”字符被选中,我试图将characterID简单地存储在Singleton类中,然后从Detail页面加载适当的字符。
不幸的是,我不明白这一点: 这是“点击”方法,已经添加了时间测量。 消息框最后告诉我:“点击方法需要3.896”
private void Button_Click_2(object sender, RoutedEventArgs e)
{
//stop the update timer
Configuration.Instance.updater.Stop();
//Get current character id
DateTime start = DateTime.Now; //time measurement
Button btn = (Button)sender;
Character myChar = (Character)btn.DataContext;
Configuration.Instance.CharacterToReload = myChar.CharacterID;
TimeSpan ts = DateTime.Now.Subtract(start); //time measurement
MessageBox.Show("Clicking method takes " + ts.TotalSeconds); //time measurement
//Navigate to Detail Page
NavigationService.Navigate(new Uri("/Details.xaml", UriKind.Relative));
}
这些简单的“演员表”如何最多需要3秒钟? 我错过了什么吗?
最好的问候, dognose
编辑:为什么我总是工作几个小时没有成功 - 然后,在电路板上创建一个帖子之后,我想出来了?
我在属性“CharacterToReload”的“set”部分添加了IsolatedStore的保存方法 - 大约需要4秒钟(大量数据/图片)
答案 0 :(得分:0)
我的猜测是,Configuration.CharacterToReload的setter是时间。
我建议您在导航Uri中将CharacterId设置为查询参数 - 如果用户在导航到详细信息页面时将其关闭,这将有助于重新保护您的应用。
在详细信息页面的“导航覆盖”中,从“导航”上下文中获取查询参数以设置详细信息页面数据上下文。
var uriString = string.Format("/DetailPage.xaml?character={0}", characterId);
NavigationService.Navigate(new Uri(uriString, UriKind.Relative));
<强> DetailPage 强>
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
string characterId;
if (NavigationContext.QueryString.TryGetValue("character", out characterId))
{
int index = 0;
if (int.TryParse(charaterId, out index))
{
// set data context of detail page.
}
}
}