2017-09-16 113 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屬性。 –