В моем приложении С# WinRT я хотел бы передать StorageFile на новую страницу навигации внутри фрейма, чтобы страница могла открыть документ и поместить содержимое файла в RichEditBox. Я попытался добавить необязательный параметр в OnNavigatedTo с StorageFile, но это приводит к сбою приложения.
Я попытался сделать так, чтобы я мог перейти на страницу, подобную этой, с другой страницы, содержащей фрейм:
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
Есть ли способ сделать что-то похожее на то, что я пытаюсь выполнить?
Вы можете только переопределить существующие методы. Вы не можете переопределить то, чего не существует - вместо этого вы создадите что-то новое. Однако Windows не будет вызывать метод, который он не знает. Поэтому придерживайтесь того, что Windows может предложить:
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
var file = e.Parameter as Windows.Storage.StorageFile;
if (file!=null)
{
...
}
}