Windows runtime 页面上的Winrt Phone 8.1应用程序共享任务功能只能工作一次

Windows runtime 页面上的Winrt Phone 8.1应用程序共享任务功能只能工作一次,windows-runtime,windows-phone-8.1,Windows Runtime,Windows Phone 8.1,我的应用程序中有一个共享简单文本的页面,无法正常工作 生成此功能的步骤 转到页面,单击“共享”,显示可以共享的应用程序 点击后退按钮=>再次点击共享按钮 这一次将不会打开共享屏幕 将我的代码粘贴到下面: protected override void OnNavigatedFrom(NavigationEventArgs e) { _dataTransferManager.DataRequested -= OnDataRequested; this

我的应用程序中有一个共享简单文本的页面,无法正常工作

生成此功能的步骤

  • 转到页面,单击“共享”,显示可以共享的应用程序

  • 点击后退按钮=>再次点击共享按钮

  • 这一次将不会打开共享屏幕

  • 将我的代码粘贴到下面:

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            _dataTransferManager.DataRequested -= OnDataRequested;
            this.navigationHelper.OnNavigatedFrom(e);
        }
    
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            _dataTransferManager = DataTransferManager.GetForCurrentView();
            _dataTransferManager.DataRequested += OnDataRequested;
            this.navigationHelper.OnNavigatedTo(e);
        }
    
        private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs e)
        {
            e.Request.Data.Properties.Title =  obj.Title;
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(obj.Description);
            string html = "";
            foreach (HtmlNode item in doc.DocumentNode.Descendants())
            {
                if (item.Name == "body")
                {
                    html = item.InnerHtml;
                }
            }
            e.Request.Data.Properties.Description = html;
            e.Request.Data.SetText(html);
        }
    
        private void AppBarButton_Click_1(object sender, RoutedEventArgs e)
        {
            //DataTransferManager.ShowShareUI();
            if (CMSService.IsConnectedToInternet())
            {
                DataTransferManager.ShowShareUI();
            }
            else
            {
                ContentText.Text = App.GetResource("NoInternetAlert");
                AlertMessage.ShowAsync();
            }
        }
    

    当调试share一直工作时。

    我怀疑问题是因为您取消订阅了
    \u dataTransferManager.DataRequested-=OnDataRequested。在调试PLM时,这将正常工作,因此不会引发此事件-而调试PLM处于禁用和禁用状态

    运行应用程序正常时,暂停将调用OnNavigatedFrom,但是,因此不会订阅到
    \u dataTransferManager.DataRequested+=OnDataRequested


    在这种情况下,您可能可以使用挂起/恢复(或其他)事件来处理DataTransferManager。

    我不知道如何在单个页面上注册挂起/恢复事件您是对的,现在也发生了完全相同的事情。问题是,在恢复应用程序时没有触发事件。如果您告诉我任何在恢复时触发的事件,这将非常有用,或者我只能在导航时注销此datarequest事件back@Yawar一切都取决于你需要实现什么。你的应用程序也应该正确处理悬挂。