Windows Phone 8.1通用应用程序DataTransferManager UI未显示

时间:2015-05-11 12:05:44

标签: c# windows-phone-8.1 win-universal-app

在我的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事件中设置不同的属性,但仍然没有。

有谁知道它可能是什么?我需要设置一些权限吗?

编辑: 好吧,很奇怪我在一个只有这个代码的新解决方案中尝试了这个并且它工作正常。但不知道为什么它不适用于我目前的解决方案。

1 个答案:

答案 0 :(得分:1)

好的,我发现了造成这个问题的原因。

我不得不删除它,因为这将取消操作。 (我认为这会显示它是否由于某种原因失败而不是直接取消)。

request.FailWithDisplayText("fail");