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