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 だけでできればカッコいいのだろうけれど、自分には無理だった。
で、テキトーに作ってみてから思ったのだけど、こういうのはユーザーコントロールにしておけばよさげだよね。というわけで、次回はユーザーコントロールでも作ってみる。