SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

UWPアプリ開発の最前線

クリップボードビューアを作ろう!
~Windows 10 1809の新機能「クリップボード履歴」にアクセス

UWPアプリ開発の最前線 第10回

クリップボード履歴を削除する

 1809でClipboardクラスに追加された履歴関係のAPIでは、履歴を削除できます。履歴リストの全てを削除するClearHistory静的メソッドと、履歴リストの中から指定したアイテムだけを削除するDeleteItemFromHistory静的メソッドがあります。

履歴リストを消去する

 サンプルアプリでいうと、次の画像の赤丸内のボタンです。

サンプルアプリ
サンプルアプリ(赤丸内が履歴全削除ボタン)

 これは、ClipboardクラスのClearHistory静的メソッドを呼び出すだけです。ボタンのイベントハンドラーは次のコードのように書けます(MainPage.xaml.cs)。

履歴リストを消去するイベントハンドラー
private void DeleteClipboardHistoryButton_Click(object sender, RoutedEventArgs e)
{
  Clipboard.ClearHistory();
}

特定の履歴を消去する

 サンプルアプリでいうと、次の画像の赤丸内のボタンです。

サンプルアプリ
サンプルアプリ(赤丸内が履歴削除ボタン)

 これは、ClipboardクラスのDeleteItemFromHistory静的メソッドを、削除したい履歴アイテムのClipboardHistoryItemオブジェクトを引数にして呼び出せばよいです。

 ただし、クリックされた削除ボタンから、削除すべき履歴アイテムが分からないといけません。この削除ボタンは、それぞれの履歴データを表示しているセルの中に配置してあるので、セルのデータコンテキストを継承しています。セルのデータコンテキストには履歴アイテムのデータを表すClipboardHistoryDataオブジェクトがバインドされるように画面を作ってあるので、削除ボタンのデータコンテキストにもClipboardHistoryDataオブジェクトが入っています。前述したように、ClipboardHistoryDataクラスには、オリジナルのClipboardHistoryItemオブジェクトもキャッシュしておくように作りました。

 そこで、次のコードのイベントハンドラーのようにして、削除すべき履歴アイテムを特定してDeleteItemFromHistory静的メソッド呼び出せます(MainPage.xaml.cs)。

指定した履歴を消去するイベントハンドラー
private void DeleteButton_Click(object sender, RoutedEventArgs e)
{
  var historyData = (sender as AppBarButton).DataContext as Data.ClipboardHistoryData;
  Clipboard.DeleteItemFromHistory(historyData.HistoryItem);
}

次のページ
履歴からクリップボードへ書き戻す

この記事は参考になりましたか?

UWPアプリ開発の最前線連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11229 2018/12/07 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー