UWP:一定時間が経過すると勝手に消えるメッセージを実装する
画面に「保存しました」っていうメッセージを出したいけれど、いつまでも表示されてるのも鬱陶しいので、たとえば3秒後に消したい、みたいな。
public class MainPageViewModel : BindableBase { private string message = string.Empty; public string Message { get { return message; } set { SetProperty(ref message, value); } } private void ShowMessage(string message) { Message = message; var timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(3), }; timer.Tick += (e, args) => { Message = string.Empty; }; timer.Start(); } }
とにかく DispatcherTimer というのを使うと、遅延タスクみたいなのを実装できるみたい。Message プロパティの setter に処理をぶち込んでもいいかも? どういう書き方がキレイな書き方なのかまだよくわかんないな。上級者は ReactibeExtension みたいなのを使いこなして、スッキリ書いちゃうのかもしれないが……。
あと、ほんとは XAML だけでできればカッコいいのだろうけれど、自分には無理だった。
で、テキトーに作ってみてから思ったのだけど、こういうのはユーザーコントロールにしておけばよさげだよね。というわけで、次回はユーザーコントロールでも作ってみる。