用户通知MVVM

时间:2015-02-18 17:05:12

标签: xaml mvvm notifications

我正在尝试创建用户通知。理想情况下,一个类似吐司的通知会在角落里显示大约三秒钟。

我正在使用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在我的视野中显示它几秒钟。关于如何做到这一点的任何提示?谢谢。

1 个答案:

答案 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。