読者です 読者をやめる 読者になる 読者になる

みかづきメモ

学習したことのメモとか、日記とか、備忘録。

UWP で「共有」画面を呼び出す

C# UWP

Windows PC が無事帰ってきたので、早速 UWP 開発を。
アプリ内データを、 Facebook やメールなどで共有するための画面を呼び出す方法です。


文字だけだと、なんともわかりにくいので、どの画面かというと
f:id:MikazukiFuyuno:20160116065451p:plain:h300
この画面。

デスクトップだと、右端ににゅっとでてくるやつ。
とりあえずコード

var dataTransferManager = DataTransferManager.GetForCurrentView();
// ...
dataTransferManager.DataRequested += (sender, e) => {
    var request = e.Request;
    request.Data.Properties.Title = " ";
    request.Data.SetText($"{Model.Text}{Environment.NewLine}https://twitter.com/{Model.ScreenName}/status/{Model.Id}");
};
DataTransferManager.ShowShareUI();

これだけで OK 。
このとき、 GetForCurrentView は、メソッド名の通り View で共有されているので、
複数定義した場合は、最後に追加した DataRequested のみ反映されます。

どうしても1つの View の中で複数呼びたい場合は、下のようにすればいいかも(一応動く)。

private void Share()
{
    var dataTransferManager = DataTransferManager.GetForCurrentView();
    dataTransferManager.DataRequested += DataRequested;
    DataTransferManager.ShowShareUI();
}

private void DataRequested(DataTransferManager sender, DataRequestedEventArgs e)
{
    var request = e.Request;
    request.Data.Properties.Title = " ";
    request.Data.SetText($"{Model.Text}{Environment.NewLine}https://twitter.com/{Model.ScreenName}/status/{Model.Id}");
    sender.DataRequested -= Callback;
}