В моем приложении я использую OnFileActivated для получения, когда файл с расширением .txt открыт в моем приложении в «Открыть с помощью» в проводнике, показывать текст этого txt-файла в RichEditBox и показывать путь в заголовке приложение. Код для размещения заголовка хорош, потому что в заголовке указывается путь к файлу, но код для отображения текста файла не работает.
Руководствовался с этой страницы: http://grogansoft.com/blog/?p=1197
Код в App.xaml.cs:
protected override void OnFileActivated(FileActivatedEventArgs args)
{
base.OnFileActivated(args);
var rootFrame = new Frame();
rootFrame.Navigated += OnNavigatedTo;
rootFrame.Navigate(typeof(MainPage), args);
Window.Current.Content = rootFrame;
Window.Current.Activate();
}
async void OnNavigatedTo(object sender, NavigationEventArgs e)
{
var args = e.Parameter as Windows.ApplicationModel.Activation.IActivatedEventArgs;
if (args != null)
{
if (args.Kind == Windows.ApplicationModel.Activation.ActivationKind.File)
{
var fileArgs = args as Windows.ApplicationModel.Activation.FileActivatedEventArgs;
string strFilePath = fileArgs.Files[0].Path;
var file = (StorageFile)fileArgs.Files[0];
await new MainPage().LoadTextFile(file);
}
}
}
Функция для отображения текста в RichEditBox
public async Task LoadTextFile(StorageFile file)
{
string text = await FileIO.ReadTextAsync(file);
current_path = file.Path;
current_file = file.Name;
var appView = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
appView.Title = current_path;
RichEditBox1.Document.SetText(TextSetOptions.None, text);
}
@ PeterTorr-MSFT Прокомментируйте свой ответ в вопросе Anwser, чтобы отметить свой ответ.





Здесь есть две основные проблемы:
OnNavigatedTo в самом MainPage, а не использовать событие Navigated на Frame.MainPage - навигационная служба сделает это за вас. Просто вызовите метод LoadTextFile из метода OnNavigatedTo.Как это:
// In MainPage.xaml.cs
protected override void OnNavigatedTo(NavigationEventArgs e)
{
// Your code here...
}
Переместите код
OnNavigatedToвMainPageи не вызывайтеnew MainPage()- - система навигации создает объект за вас.