2

我遵循了 msdn 教程和另一个教程,但我不知道我做错了什么。在 app.xaml.cs 中,我有代码

protected override void OnFileActivated(FileActivatedEventArgs args)
    {
        Frame rootFrame = Window.Current.Content as Frame;
        if (rootFrame == null)
        {
            rootFrame = new Frame();
        }

        var p = rootFrame.Content as MainPage;
        p.FileEvent = args;
        Window.Current.Activate();
    }

在 MainPage.xaml.cs 我有代码

private FileActivatedEventArgs _fileEventArgs = null; 
    public FileActivatedEventArgs FileEvent
    {
        get { return _fileEventArgs; }
        set { _fileEventArgs = value; }
    }

    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        //get the args
        if (FileEvent != null && FileEvent.Files.Count > 0)
        {
            titleText.Text = FileEvent.Files[0].Path.ToString();
        }
    }

在 this.InitializeComponent() 之后在 MainPage 构造函数中调用它。我不确定如何调试它。当我双击与该应用程序关联的 mp3 文件时,该应用程序打开但未启动,并且该文件具有等待指针图标,直到我关闭该应用程序,然后我收到一条错误消息,提示该应用程序未启动在要求的时间内。如果在我单击文件时应用程序已经打开,则没有任何反应,当我关闭应用程序时,它显示远程过程调用失败。

4

1 回答 1

0

我找到了答案,我已将入口点放到 MainPage.xaml,但将其更改为 App.xaml.cs 修复了它,因此它实际上调用了 OnFileActivated()。我还将 OnFileActivated 代码更改为

    protected override void OnFileActivated(FileActivatedEventArgs args)
    {
        Frame rootFrame = Window.Current.Content as Frame;
        if (rootFrame == null)
        {
            rootFrame = new Frame();
            Window.Current.Content = rootFrame;
        }
        if (rootFrame.Content == null)
        {
            if (!rootFrame.Navigate(typeof(MainPage)))
            {
                throw new Exception("Failed to create initial page");
            }
        }
        var p = rootFrame.Content as MainPage;
        if (p != null) p.FileEvent = args;
        p.MainPage_Loaded(null, null);
        Window.Current.Activate();
    }

从 App.xaml.css 调用 MainPage.xaml.cs 中的公共方法 p.MainPage_Loaded() 是最后一点,如果应用程序已经打开,我可以在不创建新框架的情况下使用该方法。

于 2013-09-13T05:57:02.320 回答