创建辅助窗口时的 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 自定义构造函数的主要内容,如果未能解决你的问题,请参考以下文章