创建辅助窗口时的 UWP 自定义构造函数

Posted

技术标签:

【中文标题】创建辅助窗口时的 UWP 自定义构造函数【英文标题】:UWP Custom Constructor when creating a secondary window 【发布时间】:2018-02-25 05:56:24 【问题描述】:

我正在开发一个快速应用程序,其唯一目的是在 UWP 中使用画中画模式(紧凑视图)在我的作品之上显示 Youtube 视频。以下是当前系统的工作方式:

MainPage - 处理 youtube 视频的搜索 YoutubeItem - 主页为每个 youtube 结果创建的用户控件。其中大约 50 个被放入包装面板中。 YoutubeViewer - 在自己的窗口中运行并显示 youtube 视频的单独页面。

这是我的问题。我将 youtube 视频的所有信息存储在每个 YoutubeItems 中。使用一个按钮,我记录点击事件并处理它。这是处理点击的代码:

private async void Button_Click(object sender, RoutedEventArgs e)
    
        CoreApplicationView newView = CoreApplication.CreateNewView();
        int newViewId = 0;
        await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        
            Frame frame = new Frame();
            frame.Navigate(typeof(YoutubeViewer), null);
            Window.Current.Content = frame;
            // You have to activate the window in order to show it later.
            Window.Current.Activate();

            newViewId = ApplicationView.GetForCurrentView().Id;

        );
        bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
    

当我必须将视频的链接发送到 YoutubeViewer 时,就会出现问题。最初,我是通过构造函数执行此操作的,但是在将这种方法用于 Windows 文档时,据我所知,我无法使用自己的构造函数。你们建议如何获取指向新窗口的链接?

【问题讨论】:

【参考方案1】:

有很多方法。 最简单但不一定是最优雅的方法是创建一个继承自 Frame 的新类,并向其添加链接属性。像这样的:

public class FooFrame: Frame
 
       public string Link; 

然后在您的代码中在初始化框架时分配它:

FooFrame frame = new FooFrame()Link = "youtube.link.com"

【讨论】:

抱歉这个愚蠢的问题。创建新窗口后,我将如何访问这个新属性。我相信框架是页面的容器,但我不是 100% 确定。我刚从 WPF 过来,很抱歉这些愚蠢的问题哈哈。 公开该属性。然后通过执行类似 frame.Link 的操作来访问它。如果您从页面的容器中获取它,那么因为您知道它的类型,您可以将其转换为 fooFrame,然后访问 Link 属性。

以上是关于创建辅助窗口时的 UWP 自定义构造函数的主要内容,如果未能解决你的问题,请参考以下文章

自定义构造函数

如何导航到 UWP 中的参数化构造函数? [复制]

类(对象)的定义 自定义对象构造函数

如何在 UWP 中实例化具有构造函数的页面?

在 C# 中使用自定义构造函数创建异常 [重复]

如何使用 Kotlin 创建自定义视图的构造函数