弹窗在View中,TipDialog在ViewModel中,通过Messenger通信
使用方式:在ViewModel中使用:
TipDialog.Show(TipType.Success, "支付成功");
/// <summary>
/// 提示类型(用于提示弹窗TIpDialog)
/// </summary>
public enum TipType
{
/// <summary>
/// 网络不稳定
/// </summary>
BadInternet,
/// <summary>
/// 成功
/// </summary>
Success,
/// <summary>
/// 失败
/// </summary>
Fail,
/// <summary>
/// 忙碌
/// </summary>
Busy
}
public class TipDialog
{
/// <summary>
/// 显示提示框
/// </summary>
/// <param name="tipType"></param>
/// <param name="tip"></param>
public static void Show(TipType tipType, string tip = "")
{
if (tipType == TipType.BadInternet)
{
Messenger.Default.Send(tip, TipType.BadInternet);
}
else if (tipType == TipType.Success)
{
Messenger.Default.Send(tip, TipType.Success);
}
else if (tipType == TipType.Fail)
{
Messenger.Default.Send(tip, TipType.Fail);
}
}
/// <summary>
/// 忙碌弹窗
/// </summary>
/// <param name="doWork"></param>
public static void Busy(Action doWork)
{
Messenger.Default.Send(doWork, TipType.Busy);
}
}
/// <summary>
/// 注册提示框(放在App.xaml后台中)
/// </summary>
private void RegistTipDialog()
{
this.Exit += (s, e) => { Messenger.Default.Unregister(this); };
Messenger.Default.Register<string>(this, TipType.BadInternet, (arg) =>
{
new BadInternetView().ShowDialog();
});
Messenger.Default.Register<string>(this, TipType.Success, (tip) =>
{
new SuccessView(tip).ShowDialog();
});
Messenger.Default.Register<string>(this, TipType.Fail, (tip) =>
{
new FailView(tip).ShowDialog();
});
Messenger.Default.Register<Action>(this, TipType.Busy, (action) =>
{
new BusyView(action).ShowDialog();
});
Messenger.Default.Register<string>(this, AppToken.Restart, (arg) =>
{
System.Windows.Forms.Application.Restart();
Shutdown();
});
}