2016-04-21 75 views
0

我有一個Window包含Buttons,其中所有這些都應該顯示在Window內部不同的PDF。爲此,我在Window上使用Frame,我在使用中顯示Page;調用頁面從窗口加載的事件C#WPF

private void OnPDFButton1Click(object sender, RoutedEventArgs e) 
{ 
    navigationFrame.Navigate(new Uri("View/PDFPage.xaml", UriKind.Relative)); 
} 

要顯示PagePDF,我趁它Loaded事件;

private void OnPageLoad(object sender, RoutedEventArgs e) 
{ 
    var _buttonPathDataService = new ButtonPathDataService(); 
    try 
    { 
     var pdfURI = new Uri(_buttonPathDataService.GetButtonPath(Properties.Settings.Default.VideoMode)); 
     PDFWebBrowser.Navigate(pdfURI); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("No PDF linked!"); 
    } 
} 

我這個遇到的問題是說,用戶點擊一個上Button顯示PDF,這工作正常。但是,如果用戶點擊另一個Button,因爲它使用的是Page(PDFPage.xaml),所以OnPageLoad永遠不會被啓動,因爲(非常明顯)Page已經爲之前的PDF加載。

我的問題是我如何從WindowPDFPage上調用事件,告知PDFWebBrowser導航到新的Uri?本質上,我將如何將頁面的Loaded事件的內容移動到可在點擊Window中調用的方法。

回答

1

採取PDF加載代碼的另一種方法,並從另一個按鈕調用它:

private void OnPageLoad(object sender, RoutedEventArgs e) 
{ 
    Load(); 
} 
public void Load() 
{ 
    var _buttonPathDataService = new ButtonPathDataService(); 
    try 
    { 
     var pdfURI = new Uri(_buttonPathDataService.GetButtonPath(Properties.Settings.Default.VideoMode)); 
     PDFWebBrowser.Navigate(pdfURI); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("No PDF linked!"); 
    } 
} 
1

你可以使用的OnNavigatedTo。我認爲每次用戶導航到該頁面時都會調用它。

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
     // something to do 
} 
1

您可以從另一個事件處理程序調用其他方法的事件處理程序。讓我舉個例子:

private void YourAnotherButton(object sender, RoutedEventArgs e) 
{ 
    OnPageLoad(null, null); 
} 

你的目標只是設置PDF文件的必要地址。

+0

現在我剛剛得到了兩頁,當用戶點擊一個按鈕時,我會間歇性地切換,但我一定會明天檢查一下,謝謝! – CBreeze

+0

@CBreeze隨意問任何問題。如果您覺得我的回覆對您有幫助,那麼您可以將我的回覆標記爲答案,以簡化未來搜索其他人的過程。請閱讀http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – StepUp