在UWP应用程序中,我想在主应用程序窗口的第二个屏幕上控制一些动画。 据我所知,我有两个选择:创建second Window或使用projection feature。
我的问题是:
答案 0 :(得分:2)
关于Q2:
有一些方法可以与多线程模型进行交互。如果您根据MultiView示例编写应用程序,则可以使用SecondaryViewsHelper在其他页面上调用方法等。或者,您可以从每个页面调用LaunchUriAsync。如果您将应用程序注册为协议处理程序,则可以通过OnLaunched方法接收调用。 这对于投影和多视图都很常见。
此SO页面也可以帮助您:)
Multiple instances of a Windows Universal App (Windows 10)
已编辑:示例 - 已在我的uwp应用中使用 - 已添加。
// This is a method of Application class "F10Client".
// SecondaryViews is a member of this class.
// In my app, this method is called when the app resumes.
public async Task<bool> TogglePrivateMaskForAllPages(bool isMask)
{
bool retVal = true;
if (null != ((F10Client)F10Client.Current).SecondaryViews && 0 < ((F10Client)F10Client.Current).SecondaryViews.Count)
{
foreach (var view in ((F10Client)F10Client.Current).SecondaryViews)
{
// You should use dispatcher to call the page method.
await view.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
var thePage = (ImagePage)((Frame)Window.Current.Content).Content;
// calling the method.
thePage.TogglePrivacyMask(isMask);
});
}
}
return retVal;
}
答案 1 :(得分:1)
对于我的第一个问题,Guidelines for projection manager帮助我选择了正确的方法: