Текст файла с OnFileActivated не работает C# UWP Xaml

В моем приложении я использую 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);
    }

Переместите код OnNavigatedTo в MainPage и не вызывайте new MainPage() - - система навигации создает объект за вас.

Peter Torr - MSFT 23.03.2018 05:11

@ PeterTorr-MSFT Прокомментируйте свой ответ в вопросе Anwser, чтобы отметить свой ответ.

Miguel Genaro 24.03.2018 02:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
156
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь есть две основные проблемы:

  1. Вам следует использовать виртуальный метод OnNavigatedTo в самом MainPage, а не использовать событие Navigated на Frame.
  2. Вам не нужно создавать новую копию MainPage - навигационная служба сделает это за вас. Просто вызовите метод LoadTextFile из метода OnNavigatedTo.

Как это:

// In MainPage.xaml.cs
protected override void OnNavigatedTo(NavigationEventArgs e)
{
  // Your code here...
}

Другие вопросы по теме