Using the UI View Management package
The UI View Management package is designed for improving how your applications can create and manage additional windows in Windows applications.
Creating a new application window with a Page type
Windows application developers working with a navigation Frame
will be aware of the ease of use for navigating your applications with Page
object types.
You can simply call Navigate
passing a parameter object. So why shouldn't creating a new window follow the same way.
The WindowManager
helper class provides a CreateNewWindowForPageAsync
method with multiple overloads with this exact capability.
Below is an example of launching a new application window with a page type.
private async Task LaunchNewWindow()
{
await WindowManager.CreateNewWindowForPageAsync(typeof(MainPage), "ParameterObject");
}
This example will launch a new Window with an initial page showing the MainPage
, passing the string as a page navigation parameter.
Accessing the window's CoreDispatcher
When a new window is launched using the CreateNewWindowForPageAsync
methods, the view's CoreDispatcher
instance will be registered with the ViewCoreDispatcherManager
instance.
This can be accessed from anywhere in your application's executing code using the ViewCoreDispatcherManager.Current.Get
method passing the identifier of the view.
To keep an instance of the view ID associated with your page, when initializing your page class, you can retrieve the view ID using the following code.
public MainPage()
{
var view = ApplicationView.GetForCurrentView();
this.ViewId = view?.Id ?? -1;
}
public int ViewId { get; }