使用OnFileActivated的文件的文本不适用于C#UWP Xaml

时间:2018-03-23 02:55:46

标签: c# xaml events uwp

在我的应用程序中,当文件资源管理器中的“打开方式”显示扩展名为.txt的文件时,我使用OnFileActivated获取,在RichEditBox中显示此txt文件的文本并显示其中的路径应用程序的标题。放置标题的代码很好,因为在标题中放置了文件的路径,但是显示文件文本的代码不起作用。

我被引导过这个页面: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);
    }

1 个答案:

答案 0 :(得分:0)

这里有两个基本问题:

  1. 您应该在OnNavigatedTo本身使用MainPage虚拟方法,而不是使用Navigated上的Frame事件。
  2. 您无需构建MainPage的全新副本 - 导航服务将为您执行此操作。只需在LoadTextFile方法中调用OnNavigatedTo方法。
  3. 像这样:

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