Windows phone 8.1 通用应用程序 DataTransferManager UI 未显示
Windows phone 8.1 universal app DataTransferManager UI not showing
在我的 windows phone 8.1 通用应用程序项目中,我正在尝试创建一个共享选项。
但是当我点击按钮 (ShareCommand) 时,共享 UI 没有出现,我已经在模拟器和设备上试过了。
自调用 DataRequested 事件以来,事件已正确连接,但在此事件之后,没有显示共享 UI。
这是我在 ViewModel 中使用的代码(使用 prism 框架)。
private DataTransferManager _dataTransferManager;
private DelegateCommand _shareCommand;
// Share button
public DelegateCommand ShareCommand
{
get
{
return _shareCommand ?? (_shareCommand = new DelegateCommand(() =>
{
DataTransferManager.ShowShareUI();
}));
}
}
public override async void OnNavigatedTo(object navigationParameter, NavigationMode navigationMode, Dictionary<string, object> viewModelState)
{
base.OnNavigatedTo(navigationParameter, navigationMode, viewModelState);
// get data transfer manager and register events
_dataTransferManager = DataTransferManager.GetForCurrentView();
_dataTransferManager.DataRequested += DataTransferMangerDataRequested;
_dataTransferManager.TargetApplicationChosen += DataTransferMangerTargetApplicationChosen;
}
public override void OnNavigatedFrom(Dictionary<string, object> viewModelState, bool suspending)
{
base.OnNavigatedFrom(viewModelState, suspending);
// clean up events
_dataTransferManager.DataRequested -= DataTransferMangerDataRequested;
_dataTransferManager.TargetApplicationChosen -= DataTransferMangerTargetApplicationChosen;
}
private void DataTransferMangerTargetApplicationChosen(DataTransferManager sender, TargetApplicationChosenEventArgs args)
{
}
private void DataTransferMangerDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
{
var request = args.Request;
var deferral = request.GetDeferral();
request.Data.Properties.Title = "title test";
request.Data.Properties.Description = "description test";
request.Data.SetText("test hello");
request.Data.SetUri(new Uri("https://www.google.com"));
request.FailWithDisplayText("fail");
deferral.Complete();
}
我尝试在 DataRequested 事件中设置不同的属性,但仍然没有。
有人知道它可能是什么吗?我需要设置一些权限吗?
编辑:
好吧,很奇怪我在一个只有这段代码的新解决方案中尝试了这个并且它工作正常。但不知道为什么它在我当前的解决方案中不起作用。
好的,我找到了导致问题的原因。
我不得不删除它,因为这会取消操作。 (我以为这会显示是否由于某种原因失败而不是直接取消)。
request.FailWithDisplayText("fail");
在我的 windows phone 8.1 通用应用程序项目中,我正在尝试创建一个共享选项。
但是当我点击按钮 (ShareCommand) 时,共享 UI 没有出现,我已经在模拟器和设备上试过了。
自调用 DataRequested 事件以来,事件已正确连接,但在此事件之后,没有显示共享 UI。
这是我在 ViewModel 中使用的代码(使用 prism 框架)。
private DataTransferManager _dataTransferManager;
private DelegateCommand _shareCommand;
// Share button
public DelegateCommand ShareCommand
{
get
{
return _shareCommand ?? (_shareCommand = new DelegateCommand(() =>
{
DataTransferManager.ShowShareUI();
}));
}
}
public override async void OnNavigatedTo(object navigationParameter, NavigationMode navigationMode, Dictionary<string, object> viewModelState)
{
base.OnNavigatedTo(navigationParameter, navigationMode, viewModelState);
// get data transfer manager and register events
_dataTransferManager = DataTransferManager.GetForCurrentView();
_dataTransferManager.DataRequested += DataTransferMangerDataRequested;
_dataTransferManager.TargetApplicationChosen += DataTransferMangerTargetApplicationChosen;
}
public override void OnNavigatedFrom(Dictionary<string, object> viewModelState, bool suspending)
{
base.OnNavigatedFrom(viewModelState, suspending);
// clean up events
_dataTransferManager.DataRequested -= DataTransferMangerDataRequested;
_dataTransferManager.TargetApplicationChosen -= DataTransferMangerTargetApplicationChosen;
}
private void DataTransferMangerTargetApplicationChosen(DataTransferManager sender, TargetApplicationChosenEventArgs args)
{
}
private void DataTransferMangerDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
{
var request = args.Request;
var deferral = request.GetDeferral();
request.Data.Properties.Title = "title test";
request.Data.Properties.Description = "description test";
request.Data.SetText("test hello");
request.Data.SetUri(new Uri("https://www.google.com"));
request.FailWithDisplayText("fail");
deferral.Complete();
}
我尝试在 DataRequested 事件中设置不同的属性,但仍然没有。
有人知道它可能是什么吗?我需要设置一些权限吗?
编辑: 好吧,很奇怪我在一个只有这段代码的新解决方案中尝试了这个并且它工作正常。但不知道为什么它在我当前的解决方案中不起作用。
好的,我找到了导致问题的原因。
我不得不删除它,因为这会取消操作。 (我以为这会显示是否由于某种原因失败而不是直接取消)。
request.FailWithDisplayText("fail");