2017-09-16 76 views
0

我正在开发一个快速应用程序,其目的是在UWP中使用画中画模式(紧凑视图),以在我的工作之上显示Youtube视频。以下是当前系统的工作方式:创建辅助窗口时的UWP自定义构造函数

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文档中使用这种方法时,我无法根据自己的知识使用自己的构造函数。你会如何建议让链接到新窗口?

回答

0

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

public class FooFrame: Frame 
{ 
     public string Link; 
} 

然后在你的代码为它分配在初始化框架:

FooFrame frame = new FooFrame(){Link = "youtube.link.com"} 
+0

对不起,愚蠢的问题。一旦我创建了新窗口,我将如何访问这个新的属性。我相信框架是页面的容器,但我不是100%确定的。我刚刚来自WPF,所以很抱歉这些愚蠢的问题哈哈。 – Saghen

+0

公开财产。然后通过类似frame.Link的方式访问它。如果你从页面的容器中获得它,那么因为你知道它的类型,你可以将它转换成fooFrame,然后访问Link属性。 –