Windows 8 通过share charm在metro应用程序中共享视频和照片

Windows 8 通过share charm在metro应用程序中共享视频和照片,windows-8,windows-runtime,Windows 8,Windows Runtime,我正在尝试从应用程序中拍摄照片和视频,并尝试通过share charm进行分享,但我在这样做时遇到了问题。我拍完照片后,分享咒语说分享图片有问题。这是我的密码。有人能告诉我我做错了什么吗 namespace Temp { /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> publ

我正在尝试从应用程序中拍摄照片和视频,并尝试通过share charm进行分享,但我在这样做时遇到了问题。我拍完照片后,分享咒语说分享图片有问题。这是我的密码。有人能告诉我我做错了什么吗

namespace Temp
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class Page1 : Page
    {

        private StorageFile _photo; // Photo file to share
        private StorageFile _video; // Video file to share





        private async void OnCapturePhoto(object sender, TappedRoutedEventArgs e)
        {
            var camera = new CameraCaptureUI();
            var file = await camera.CaptureFileAsync(CameraCaptureUIMode.Photo);

            if (file != null)
            {
                _photo = file;
                DataTransferManager.ShowShareUI();
            }
        }



        private async void OnCaptureVideo(object sender, TappedRoutedEventArgs e)
        {
            var camera = new CameraCaptureUI();
            camera.VideoSettings.Format = CameraCaptureUIVideoFormat.Wmv;
            var file = await camera.CaptureFileAsync(CameraCaptureUIMode.Video);

            if (file != null)
            {
                _video = file;
                DataTransferManager.ShowShareUI();
            }
        }

        void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
        {
            var request = args.Request;


            if (_photo != null)
            {
                request.Data.Properties.Description = "Component photo";
                var reference = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromFile(_photo);
                request.Data.Properties.Thumbnail = reference;
                request.Data.SetBitmap(reference);
                _photo = null;

            }
            else if (_video != null)
            {
                request.Data.Properties.Description = "Component video";
                List<StorageFile> items = new List<StorageFile>();
                items.Add(_video);
                request.Data.SetStorageItems(items);
                _video = null;
            }

        }

      }


        protected override void OnNavigatedTo(NavigationEventArgs e)
        {

            DataTransferManager.GetForCurrentView().DataRequested += OnDataRequested;

        }







}
namespace-Temp
{
/// 
///可以单独使用或在框架内导航到的空页。
/// 
公共密封部分类第1页:第
{
私有存储文件_photo;//要共享的照片文件
私有存储文件_video;//要共享的视频文件
私有异步void OnCapturePhoto(对象发送方,TappedRoutedEventArgs e)
{
var camera=new CameraCaptureUI();
var file=wait camera.CaptureFileAsync(CameraCaptureUIMode.Photo);
如果(文件!=null)
{
_照片=文件;
DataTransferManager.ShowShareUI();
}
}
私有异步void OnCaptureVideo(对象发送方,TappedRoutedEventArgs e)
{
var camera=new CameraCaptureUI();
camera.VideoSettings.Format=CameraCaptureUIVideoFormat.Wmv;
var file=wait camera.CaptureFileAsync(CameraCaptureUIMode.Video);
如果(文件!=null)
{
_视频=文件;
DataTransferManager.ShowShareUI();
}
}
无效OnDataRequested(DataTransferManager发送方,DataRequestedEventArgs参数)
{
var request=args.request;
如果(_photo!=null)
{
request.Data.Properties.Description=“组件照片”;
var reference=Windows.Storage.Streams.RandomAccessStreamReference.CreateFromFile(_photo);
request.Data.Properties.缩略图=参考;
请求.数据.设置图(参考);
_photo=null;
}
否则如果(_video!=null)
{
request.Data.Properties.Description=“组件视频”;
列表项=新列表();
项目。添加(_视频);
请求.数据.设置存储项(项);
_视频=空;
}
}
}
受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e)
{
DataTransferManager.GetForCurrentView().DataRequested+=OnDataRequested;
}
}

为了让你的应用程序共享,你必须设置
DataPackagePropertySet
的标题和至少一个“SetXXX”方法。如果没有,则在尝试共享“来自的数据有问题”时,将看到以下消息


因此添加
request.Data.Properties.Title=“照片或视频的标题”
在数据请求事件中。

为了让你的应用程序共享,你必须设置
DataPackagePropertySet
的标题和至少一个“SetXXX”方法。如果没有,则在尝试共享“来自的数据有问题”时,将看到以下消息


因此添加
request.Data.Properties.Title=“照片或视频的标题”在OnDataRequested事件中。

默认情况下,应用程序会尝试与skydrive共享。不管怎样,我可以试着用电子邮件分享吗?还有,你所说的SetXXX方法是什么意思?有什么例子吗?MSDN示例通过share charm共享各种文件。SetXXX方法意味着,有许多方法可以共享不同的数据,如
SetData()
SetHtmlFormat()
SetText()
,等等。默认情况下,应用程序会尝试与skydrive共享。不管怎样,我可以试着用电子邮件分享吗?还有,你所说的SetXXX方法是什么意思?有什么例子吗?MSDN示例通过share charm共享各种文件。SetXXX方法意味着,有许多方法可以共享不同的数据,比如
SetData()
SetHtmlFormat()
SetText()
,等等