HI,
you have two problems in your code:
- every time if you select item ("acc") you add a new handler (anonymous delegate).
- LoadCompleted event will be raised from outside of MainViewModel.
Add handler to LoadCompleted only once and use parameter to transfer instance of ProfilePageViewModel:
private void PasgeSelectionItem(ModernWpf.Controls.Frame frame)
{
frame?.Navigate(SelectedItem?.NavLink);
if (SelectedItem!.Name.Equals("CntactUS"))
{
SendEmail();
}
if (SelectedItem.Name.Equals("acc"))
{
if (!string.IsNullOrEmpty(UserId))
{
if (frame != null)
{
SetLoadCompleted(frame);
frame.Navigate(SelectedItem.NavLink, new ProfilePageViewModel(UserId));
}
}
}
}
#pragma warning disable CS8602
private bool _setLoadCompleted = false;
private void SetLoadCompleted(ModernWpf.Controls.Frame frame)
{
if (this._setLoadCompleted) return;
frame.LoadCompleted += (s, e) =>
{
if (e.Content != null && e.ExtraData != null) (e.Content as Page).DataContext = e.ExtraData;
};
_setLoadCompleted = true;
}