Modern UI for WPF- navigation

2019-03-03 14:31发布

问题:

How can I pass parameter beetwen pages? I've tried to add parameters to page uri but it didn't work because I can't use onNavigatedTo event on user control. Please help

回答1:

You must use OnFragmentNavigation.

public void OnFragmentNavigation(FragmentNavigationEventArgs e)
{
  DoYourStuff(e.Fragment)
}

e.Fragement contains everything past the # in the URI. In example, using

NavigationCommands.GoToPage.Execute("/Pages/CustomerPage.xaml#CustomerID=12345", this);

e.Fragment will be "CustomerID=12345"



回答2:

It looks like you are coming from a client browser showing web pages world. With WPF you own the app! you can simply set the value on the new page before or after navigating, pass it in with a constructor or access it from a location accessible from both pages. It sounds like the parameter is an argument to the page so I would pass it in with a constructor in this case:

public class APage : Page
{
    private object myVar; // use whatever Type you want

    public APage
    {
        InitializeComponent();
    }

    public APage(object arg) : this()
    { 
        this.myVar = args;
    }
}