如何将DataTransferManager与MenuFlyoutItem

时间:2015-08-20 13:32:52

标签: c# windows-phone-8.1 runtime

我发现PW8.1 Runtime C#中的 ShareLinkTask DataTransferManager 取代, 所以我尝试使用带有示例按钮的 DataTransferManager ,但它有效,但 MenuFlyoutItem 的问题,因为我尝试在 ListBox中共享所选项目的内容,这是我的代码

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        // Register the current page as a share source.
        _dataTransferManager = DataTransferManager.GetForCurrentView();
        _dataTransferManager.DataRequested += OnDataRequested;
    }
    protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        // Unregister the current page as a share source.
        _dataTransferManager.DataRequested -= OnDataRequested;
    }

protected void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs e)
        {
            listitem = (e.OriginalSource as MenuFlyoutItem).DataContext as WritePadFileContent;
            e.Request.Data.Properties.Title = listitem.Name.ToString();
            e.Request.Data.Properties.Description = "Some description"; // Optional
            e.Request.Data.SetUri(new Uri(listitem.Description.ToString()));
        }
// Click Button to share Web Link
private void btnShareLink_Click(object sender, RoutedEventArgs e)
{
    DataTransferManager.ShowShareUI();
}

但问题是 OriginalSource 用红色下划线,错误是

  

错误2' Windows.ApplicationModel.DataTransfer.DataRequestedEventArgs'不包含' OriginalSource'的定义没有扩展方法' OriginalSource'接受类型' Windows.ApplicationModel.DataTransfer.DataRequestedEventArgs'的第一个参数。可以找到(你缺少using指令或程序集引用?)C:\ Users \ juste 3al faza \ Contacts \ Documents \ WritePad SDK \ WritePad_CSharpMetroSample \ WritePad_CSharpSample.WindowsPhone \ MainContent.xaml.cs 500 27 WritePad_CSharpSample.WindowsPhone

我使用 listitem =(e.OriginalSource作为MenuFlyoutItem).DataContext作为WritePadFileContent; 来获取由名称和描述定义的所选项目以共享它,并且它可以与另一种方法一起使用。

1 个答案:

答案 0 :(得分:0)

我得到了我的解决方案并且它有效 我列出 FrameworkElement senderElement; 它属于MenuFlyout的holding方法, 那么,

protected void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs e)
    {
        WritePadFileContent datacontext = (WritePadFileContent) senderElement.DataContext;
        e.Request.Data.Properties.Title = datacontext.Name.ToString();
        e.Request.Data.Properties.Description = "Some description"; // Optional
        e.Request.Data.SetText(datacontext.Description.ToString());
    }