【问题标题】:UWP: Control second window from main windowUWP:从主窗口控制第二个窗口
【发布时间】:2017-02-16 21:46:37
【问题描述】:

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

我的问题是:

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

【问题讨论】:

  • 你会看中文吗?我在post 中写了一些关于连接到两个页面和一些关于 MVVM 的介绍。连接两个页面的好方法是使用 MVVMLight,请参阅:mvvmlight.net

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


【解决方案1】:

关于第二季度:

有一些方法可以与多线程模型交互。如果您基于 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;
    }

【讨论】:

  • 查看 UWP 示例,MultiView 和 Projection 看起来非常相似,您可以在其中创建具有新视图的新框架。我可能还需要 SecondaryViewsHelper 来控制投影,因为它是它自己的视图实例,对吧?
  • 啊,你是对的。我误解了投影模型。我会修改它。
  • 您能否举个例子,您将如何使用 SecondaryViewsHelper 来调用其他视图中的方法?具体来说,我想将滚动事件传递给第二个视图。
【解决方案2】:

对于我的第一个问题,Guidelines for projection manager 帮助我选择了正确的方法:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 2019-06-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多