クリップボード履歴を削除する
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);
}
