在C#WinRT应用程序中将StorageFile传递给OnNavigatedTo

时间:2014-05-26 13:58:48

标签: c# xaml windows-runtime storagefile

在我的C#WinRT应用程序中,我想将StorageFile传递到框架内的新导航页面,以便页面可以打开文档并将文件的内容放入RichEditBox。我尝试使用StorageFile向OnNavigatedTo添加可选参数,但它会导致应用程序崩溃。

我试图这样做,以便我可以从包含框架的另一个页面导航到这样的页面:

RootFrame.Navigate(typeof(Editor), file);

然后启动框架页面:

protected override async void OnNavigatedTo(Windows.UI.Xaml.Navigation.NavigationEventArgs e, Windows.Storage.StorageFile file)
        {
            if (file)
            {
                try
                {
                    EditorBox.Document.SetText(Windows.UI.Text.TextSetOptions.None, await Windows.Storage.FileIO.ReadTextAsync(file));
                }
                catch
                {
                }
            }
        }

但是这样做,我得到以下错误:

  • 'TestApp.Page3.OnNavigatedTo(Windows.UI.Xaml.Navigation.NavigationEventArgs, Windows.Storage.StorageFile)' is a new virtual member in sealed class 'TestApp.Page3'
  • 'TestApp.Page3.OnNavigatedTo(Windows.UI.Xaml.Navigation.NavigationEventArgs, Windows.Storage.StorageFile)': no suitable method found to override

有没有办法做一些类似于我想要完成的事情?

1 个答案:

答案 0 :(得分:3)

您只能覆盖现有方法。您无法覆盖不存在的内容 - 您可以创建新内容。然而,Windows不会称之为它不知道的方法。所以坚持使用Windows提供的功能:

protected override async void OnNavigatedTo(NavigationEventArgs e)
{
    var file = e.Parameter as Windows.Storage.StorageFile;
    if (file!=null)
    {
        ...
    }
}