我正在尝试创建用户通知。理想情况下,一个类似吐司的通知会在角落里显示大约三秒钟。
我正在使用MVVM-light,我认为可以使用其messenger-service完成通知。
我有这堂课:
public class NotificationSync
{
public string Messages { get; set; }
}
在一个视图模型中,我设置了这样的Messenger:
Messenger.Default.Send(new NotificationSync()
{
Messages = "message"
});
在我的MainviewModel(这是视图的datacontext)中,我这样听:
Messenger.Default.Register<NotificationSync>(this, (action) =>
Mess = action.Messages );
Mess
是viewmodel上的字符串属性:
private string mess;
public string Mess
{
get { return mess; }
set
{
mess = value;
RaisePropertyChanged("Mess");
}
}
我想要做的事情就是以类似吐司的方式将它绑定到我的视图中。 I.E在我的视野中显示它几秒钟。关于如何做到这一点的任何提示?谢谢。
答案 0 :(得分:1)
吐司加上计时器的Visibility属性怎么样?
Messenger.Default.Register<NotificationSync>(this, (action) =>
Mess = action.Messages
ShowToast();
);
private void ShowToast()
{
IsToastVisible = true;
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = TimeSpan.FromSeconds(3);
dispatcherTimer.Start();
}
void OnTimerTick(Object sender, EventArgs args)
{
IsToastVisible = false;
}
这假设Mess绑定的文本框也绑定到IsToastVisible,它使用VisibilityConverter。