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

C# UWP:从主窗口控制第二个窗口,c#,uwp,win-universal-app,windows-10-universal,C#,Uwp,Win Universal App,Windows 10 Universal,在UWP应用程序中,我想在主应用程序窗口的第二个屏幕上控制一些动画。 据我所知,我有两个选择:创建或使用 我的问题是: 在这种情况下,哪个选项更有意义/更容易实现 如何对第二个屏幕上主窗口中的事件作出反应 关于第二季度: 有一些方法可以与多线程模型交互。如果您基于MultiView示例编写应用程序,您可以在其他页面上使用SecondaryViewsHelper调用方法,等等。或者,您可以从每个页面调用Launchurisync。如果将应用程序注册为协议处理程序,则可以通过OnLaunched方

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

我的问题是:

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

有一些方法可以与多线程模型交互。如果您基于MultiView示例编写应用程序,您可以在其他页面上使用SecondaryViewsHelper调用方法,等等。或者,您可以从每个页面调用Launchurisync。如果将应用程序注册为协议处理程序,则可以通过OnLaunched方法接收调用。 这对于投影和多视图都很常见

此SO页面还可以帮助您:)

编辑:示例-用于我的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;
    }
//这是应用程序类“F10Client”的方法。
//SecondaryViews是此类的成员。
//在我的应用程序中,此方法在应用程序恢复时调用。
公共异步任务切换PrivateMaskForallPages(布尔isMask)
{
bool-retVal=true;
如果(null!=((F10Client)F10Client.Current).SecondaryViews和&0<((F10Client)F10Client.Current).SecondaryViews.Count)
{
foreach(在((F10Client)F10Client.Current.SecondaryView中的变量视图)
{
//您应该使用dispatcher调用page方法。
wait view.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,()=>
{
var thePage=(ImagePage)((Frame)Window.Current.Content).Content;
//调用该方法。
页面切换PrivacyMask(isMask);
});
}
}
返回返回;
}

对于我的第一个问题,帮助我选择了正确的道路:


你会读中文吗?我写了一些关于连接到两个页面的内容,并介绍了一些关于MVVM的内容。连接两个页面的好方法是使用MVVMLight,请参阅:查看UWP示例,MultiView&Projection看起来非常相似,您可以使用新视图创建一个新框架。我可能还需要SecondaryViewsHelper来控制投影,因为它是自己的视图实例,对吗?啊,你说得对。我误解了投影模型。我会修改它。你能举个例子吗,如何使用SecondaryViewsHelper在其他视图中调用方法?具体来说,我想将一个滚动事件传递给第二个视图。