atelier:mitsuba

i love UI/UX, Blend, XAML, Behavior, P5, oF, Web, Tangible Bits and Physical computing. なにかあればお気軽にご連絡ください。atelier@c-mitsuba.com

その20:共有コントラクトターゲットにSetTextで設定した値を渡す。

共有コントラクトターゲットを使えば、簡単に共有の受け手をつくれます。

で、よく使うSetTextを受け取りたい場合はこう書きます。

this.DefaultViewModel["Comment"] = await _shareOperation.Data.GetTextAsync("Text");

SetTextはプロパティじゃないので、ちょっとアクセス方法がちがいますね。

    public sealed partial class ShareTargetPage1 : App15.Common.LayoutAwarePage
    {
        /// <summary>
        /// 共有操作について、Windows と通信するためのチャネルを提供します。
        /// </summary>
        private Windows.ApplicationModel.DataTransfer.ShareTarget.ShareOperation _shareOperation;

        public ShareTargetPage1()
        {
            this.InitializeComponent();
        }

        /// <summary>
        /// 他のアプリケーションがこのアプリケーションを介してコンテンツの共有を求めた場合に呼び出されます。
        /// </summary>
        /// <param name="args">Windows と連携して処理するために使用されるアクティベーション データ。</param>
        public async void Activate(ShareTargetActivatedEventArgs args)
        {
            this._shareOperation = args.ShareOperation;

            // ビュー モデルを使用して、共有されるコンテンツのメタデータを通信します
            var shareProperties = this._shareOperation.Data.Properties;
            var thumbnailImage = new BitmapImage();
            this.DefaultViewModel["Title"] = shareProperties.Title;
            this.DefaultViewModel["Description"] = shareProperties.Description;
            this.DefaultViewModel["Image"] = thumbnailImage;
            this.DefaultViewModel["Sharing"] = false;
            this.DefaultViewModel["ShowImage"] = false;
            this.DefaultViewModel["Comment"] = await _shareOperation.Data.GetTextAsync("Text");
            this.DefaultViewModel["SupportsComment"] = true;

            

            Window.Current.Content = this;
            Window.Current.Activate();

            // 共有されるコンテンツの縮小版イメージをバックグラウンドで更新します
            if (shareProperties.Thumbnail != null)
            {
                var stream = await shareProperties.Thumbnail.OpenReadAsync();
                thumbnailImage.SetSource(stream);
                this.DefaultViewModel["ShowImage"] = true;
            }
        }