从窗口C#WPF调用页面的加载事件

时间:2016-04-21 07:15:21

标签: c# wpf xaml user-interface events

我的Window包含多个Buttons,所有这些都应该在PDF内显示不同的Window。要执行此操作,我在Frame上使用Window,我在使用中显示Page;

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

要在PDF内显示Page,我会利用它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.xll),OnPageLoad永远不会被解雇,因为(很明显){{1}已经加载了之前的Page

我的问题是如何在PDF上通过我的主PDFPage调用一个事件来告诉Window导航到新的PDFWebBrowser?基本上,我如何将页面的Uri事件的内容移动到可以在Loaded的{​​{1}}点击中调用的方法。

3 个答案:

答案 0 :(得分: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 :(得分:1)

你可以使用OnNavigatedTo。我认为每次用户导航到该页面时都会调用它。

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

答案 2 :(得分:1)

您可以从另一个方法从另一个事件处理程序调用事件处理程序。让我举个例子:

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

您的目标只是设置PDF文件的必要地址。