-
Notifications
You must be signed in to change notification settings - Fork 277
Open
Description
Hi SingletonSean,
I used the Navigation source code in the tutorial and found that when navigating to a View with a datagrid, loading is very time-consuming. The data bound to the datagrid is only 40 rows. I would like to ask how to optimize it.
it is the load log
16:07:56 486 view changed
16:07:56,486 navigation Analog: 4 ms
16:07:56 574 analog view
16:07:57 273 datagrid loaded take 698 msit is AnalogView and layoutNavigation Code:
public partial class AnalogView : UserControl
{
Stopwatch watch;
public AnalogView()
{
InitializeComponent();
Console.WriteLine($"{DateTime.Now:HH:mm:ss fff} analog view");
watch = new Stopwatch();
watch.Restart();
this.Loaded += AnalogView_Loaded;
}
~AnalogView()
{
}
private void AnalogView_Loaded(object sender, RoutedEventArgs e)
{
//watch.Stop();
//Console.WriteLine($"{watch.ElapsedMilliseconds}");
this.Loaded-= AnalogView_Loaded;
}
private void datagrid_Loaded(object sender, RoutedEventArgs e)
{
watch.Stop();
Console.WriteLine($"{DateTime.Now:HH:mm:ss fff} datagrid loaded take {watch.ElapsedMilliseconds} ms");
this.datagrid.Loaded -= datagrid_Loaded;
}
}
public class LayoutNavigationService<TViewModel> : INavigationService
where TViewModel : ObservableRecipient
{
private readonly NavigationStore _navigationStore;
private readonly Func<TViewModel> _createViewModel;
private readonly Func<NavigationBarViewModel> _createNavigationBarViewModel;
private System.Diagnostics.Stopwatch stopwatch;
public LayoutNavigationService(NavigationStore navigationStore, Func<TViewModel> createViewModel, Func<NavigationBarViewModel> createNavigationBarViewModel,
string navigationName)
{
NavigationName = navigationName;
Console.WriteLine($"{DateTime.Now:HH:mm:ss,fff} ctor navigation {NavigationName}");
stopwatch = new System.Diagnostics.Stopwatch();
//stopwatch.Restart();
_navigationStore = navigationStore;
_createViewModel = createViewModel;
_createNavigationBarViewModel = createNavigationBarViewModel;
}
~LayoutNavigationService()
{
Console.WriteLine($"{DateTime.Now:HH:mm:ss,fff} dispose navigation {NavigationName}");
}
public string NavigationName { get; set; }
public void Navigate()
{
//stopwatch.Stop();
//string time1 = stopwatch.ElapsedMilliseconds.ToString();
stopwatch.Restart();
_navigationStore.CurrentViewModel = new LayoutViewModel(_createNavigationBarViewModel(), _createViewModel());
stopwatch.Stop();
string time2 = stopwatch.ElapsedMilliseconds.ToString();
Console.WriteLine($"{DateTime.Now:HH:mm:ss,fff} navigation {NavigationName}: {time2} ms");
}
}Looking forward to your reply,Thank you
Metadata
Metadata
Assignees
Labels
No labels