繁体   English   中英

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

[英]Calling Loaded Event of Page From Window C# WPF

我有一个包含多个ButtonsWindow ,所有这些Buttons都应该在Window内部显示不同的PDF 为此,我在Window上使用一个Frame ,在其中显示Page

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

要在Page内显示PDF ,我要利用它的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加载。

我的问题是如何从主Window告诉PDFWebBrowser导航到新的Uri如何在PDFPage上调用事件? 本质上,我将如何将页面的Loaded事件的内容移动到可以在Window单击Button调用的方法。

将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!");
    }
}

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM