あるページから次のページへ、UI にバインドされている 1 つのプロパティがあり、この割合は 1 回の無駄な時間操作を必要とするため、ページが長時間表示されません。速度を改善する方法はありますか。
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) {
string value = string.Empty;
IDictionary<string, string> queryString = this.NavigationContext.QueryString;
if (queryString.ContainsKey("Type"))
{
this.Type = queryString["Type"];
new Thread(() => {
mtv.AddDistanceForList();
}).Start();
}
else
{
GetMovieThreater();
}
base.OnNavigatedTo(e); }
private void GetMovieThreater() {
string movieId = PhoneApplicationService.Current.State["MovieId"] as string;
mtv.SelectThreaterByMovie(movieId);
mtv.AddDistanceForList(); }
View Model では次のようになります。
private ObservableCollection<Threater> threaters; public ObservableCollection<Threater> Threaters {
get { return threaters; }
set
{
if (threaters != value)
{
threaters = value;
NotifyPropertyChanged("Threaters");
}
} }
private CollectionViewSource filteredThreater; public CollectionViewSource FilteredThreater {
get { return filteredThreater; }
set
{
filteredThreater = value;
NotifyPropertyChanged("FilteredThreater");
} } This function wate time!!! public void SelectThreaterByMovie(string movieId) {
Threaters.Clear();
if(MovieDataAllMovies.Threaters!=null)
{
foreach(var i in MovieDataAllMovies.MoviePlans){
if (i.MovieId == movieId)
{
MovieDataAllMovies.Threaters.ForEach((e) =>
{
if (i.TheaterId == e.Tid.ToString())
{
Threaters.Add(e);
}
});
}
}
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
this.FilteredThreater.Source = Threaters;
}); } }