C# Windows 10上已激活OnShareTarget

C# Windows 10上已激活OnShareTarget,c#,navigation,windows-phone-8.1,share,windows-10,C#,Navigation,Windows Phone 8.1,Share,Windows 10,我想从外部环境中获取文本 protected override void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { var frame = new Frame(); frame.Navigate(typeof(Pages.WorkPage), args.ShareOperation); Window.Current.Content = new MainPag

我想从外部环境中获取文本

 protected override void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
    {
        var frame = new Frame();
        frame.Navigate(typeof(Pages.WorkPage), args.ShareOperation);

        Window.Current.Content = new MainPage(frame);
        Window.Current.Activate();
    }
我的主页建设:

 public MainPage(Frame frame)
    {
        this.InitializeComponent();
        this.splitView.Content = frame;

        ((Frame)splitView.Content).Navigate(typeof(Pages.WorkPage));
    }
。。然后像这样在我的工作页面中导航到

   protected async override void OnNavigatedTo(NavigationEventArgs e)
    {
        if (e.Parameter == null) return;

        var shareOperation = (Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation)e.Parameter;
        if (shareOperation.Data.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.Text))
            txtMessages.Text = await shareOperation.Data.GetTextAsync();
    }

如何更改ShareTargetActivated上的
以使我的
导航正常工作?

您正在尝试加载
主页
,并将其
框架
导航到
工作页
,同时将共享文本传递到
工作页
。为此,您不需要将新的
传递到
主页
,当加载页面并成为父帧的当前源时,将调用方法。因此,您可以在
MainPage
的框架中导航,并在
on导航到
MainPage
on方法中传递共享文本,在
on共享获取激活的
中,您只需导航到
MainPage

您可以按如下方式更改ShareTargetActivated上的

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter is Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation)
    {
        var shareOperation = (Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation)e.Parameter;
        if (shareOperation.Data.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.Text))
        {
            var data = await shareOperation.Data.GetTextAsync();
            ((Frame)splitView.Content).Navigate(typeof(WorkPage), data);
        }
    }
    else
    {
        ((Frame)splitView.Content).Navigate(typeof(WorkPage));
    }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter != null)
    {
        var data = e.Parameter;
        txtMessages.Text = data.ToString();
    }
}
ShareTargetActivatedEventArgs上受保护的覆盖异步无效(ShareTargetActivatedEventArgs args)
{
Frame rootFrame=Window.Current.Content作为Frame;
if(rootFrame==null)
{
//创建一个框架作为导航上下文并导航到第一页
rootFrame=新框架();
//将框架放置在当前窗口中
Window.Current.Content=rootFrame;
}
rootFrame.Navigate(typeof(主页),args.ShareOperation);
Window.Current.Activate();
}
MainPage
Construcor如下:

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter is Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation)
    {
        var shareOperation = (Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation)e.Parameter;
        if (shareOperation.Data.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.Text))
        {
            var data = await shareOperation.Data.GetTextAsync();
            ((Frame)splitView.Content).Navigate(typeof(WorkPage), data);
        }
    }
    else
    {
        ((Frame)splitView.Content).Navigate(typeof(WorkPage));
    }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter != null)
    {
        var data = e.Parameter;
        txtMessages.Text = data.ToString();
    }
}
public主页()
{
this.InitializeComponent();
//this.splitView.Content=frame;
//((Frame)splitView.Content)导航(typeof(WorkPage));
}
on导航添加到
MainPage
,如下所示:

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter is Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation)
    {
        var shareOperation = (Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation)e.Parameter;
        if (shareOperation.Data.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.Text))
        {
            var data = await shareOperation.Data.GetTextAsync();
            ((Frame)splitView.Content).Navigate(typeof(WorkPage), data);
        }
    }
    else
    {
        ((Frame)splitView.Content).Navigate(typeof(WorkPage));
    }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter != null)
    {
        var data = e.Parameter;
        txtMessages.Text = data.ToString();
    }
}
工作页的
on导航更改为
,如下所示:

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter is Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation)
    {
        var shareOperation = (Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation)e.Parameter;
        if (shareOperation.Data.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.Text))
        {
            var data = await shareOperation.Data.GetTextAsync();
            ((Frame)splitView.Content).Navigate(typeof(WorkPage), data);
        }
    }
    else
    {
        ((Frame)splitView.Content).Navigate(typeof(WorkPage));
    }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.Parameter != null)
    {
        var data = e.Parameter;
        txtMessages.Text = data.ToString();
    }
}
顺便问一下,为什么要为这个问题添加Windows Phone 8.1标签?WP8.1中不存在SplitView