UWP:从主窗口控制第二个窗口

时间:2017-02-15 14:20:07

标签: c# uwp win-universal-app windows-10-universal

在UWP应用程序中,我想在主应用程序窗口的第二个屏幕上控制一些动画。 据我所知,我有两个选择:创建second Window或使用projection feature

我的问题是:

  • 在这种情况下哪个选项更有意义/更容易实现?
  • 如何在第二个屏幕上对主窗口中的事件做出反应?

2 个答案:

答案 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帮助我选择了正确的方法:

enter image description here