You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
249 lines
7.9 KiB
249 lines
7.9 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Windows;
|
|
using System.Threading;
|
|
using System.Windows.Controls;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text.RegularExpressions;
|
|
using System.Reflection;
|
|
|
|
namespace GummingCommon
|
|
{
|
|
public class ViewModelBase : INotifyPropertyChanged, IDisposable
|
|
{
|
|
public delegate void ResponseCallbackDelegate(ResopnseType type, object content);
|
|
public virtual event ResponseCallbackDelegate OnResponseCallbackDelegate;
|
|
|
|
public bool IsKeepInProcessVisibility { get; set; }
|
|
|
|
public bool DisabledShowDialogView { get; set; }
|
|
|
|
public bool IsActivePage { get; set; }
|
|
|
|
public bool IsActiveChildPage { get; set; }
|
|
|
|
public UIElement SourceElement { get; set; }
|
|
public ViewModelBase()
|
|
{
|
|
IsKeepInProcessVisibility = false;
|
|
DisabledShowDialogView = false;
|
|
}
|
|
|
|
public virtual void InitializeParameters(object content = null)
|
|
{
|
|
}
|
|
|
|
|
|
protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
|
|
{
|
|
PropertyChangedEventHandler handler = PropertyChanged;
|
|
if (handler != null)
|
|
handler(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
|
|
protected void OnPropertyChanged(PropertyInfo[] propertyNames)
|
|
{
|
|
PropertyChangedEventHandler handler = PropertyChanged;
|
|
if (handler != null)
|
|
{
|
|
foreach (var s in propertyNames)
|
|
handler(this, new PropertyChangedEventArgs(s.Name));
|
|
}
|
|
}
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
public void OnMainPageCallbackDelegate(CallbackType calltype, Object content)
|
|
{
|
|
AppEventAggregator.GetEventAggregator().GetEvent<NotifyChangedEvent>().Publish(new NotifyEventParameter() { NotifyType = calltype, NotifyContent= content });
|
|
}
|
|
|
|
public void OnCallbackPreviousPage()
|
|
{
|
|
if (AppParameter.CommandList.Count > 1)
|
|
{
|
|
var viewmodule = AppParameter.CommandList[AppParameter.CommandList.Count - 2];
|
|
AppParameter.CommandList.RemoveAt(AppParameter.CommandList.Count - 1);//remove last
|
|
AppParameter.CommandList.RemoveAt(AppParameter.CommandList.Count - 1);//remove next
|
|
OnMainPageCallbackDelegate(CallbackType.PreviousView, viewmodule);
|
|
}
|
|
}
|
|
|
|
public virtual void OnGotoTopLevel()
|
|
{
|
|
OnCallbackPreviousPage();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
OnDispose();
|
|
}
|
|
|
|
protected virtual void OnDispose()
|
|
{
|
|
}
|
|
|
|
public void ShowProgressView(string message)
|
|
{
|
|
Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
{
|
|
OnMainPageCallbackDelegate(CallbackType.StartProcessing, message);
|
|
}));
|
|
}
|
|
|
|
public void SetProgressView(string message)
|
|
{
|
|
Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
{
|
|
OnMainPageCallbackDelegate(CallbackType.InProcessing, message);
|
|
}));
|
|
}
|
|
|
|
public void CloseProgressView()
|
|
{
|
|
try
|
|
{
|
|
if (Application.Current != null)
|
|
{
|
|
Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
{
|
|
OnMainPageCallbackDelegate(CallbackType.EndProcess, null);
|
|
}));
|
|
}
|
|
}
|
|
catch { }//不需要捕获异常
|
|
}
|
|
|
|
public void ShowMessageBox(string message)
|
|
{
|
|
AppEventAggregator.GetEventAggregator().GetEvent<NotifyChangedEvent>().Publish(new NotifyEventParameter() { NotifyType = CallbackType.KeyPressThreadStop });
|
|
CloseProgressView();
|
|
if (Application.Current != null)
|
|
{
|
|
Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
{
|
|
Helpering.ShowMessageBox(message);
|
|
}));
|
|
}
|
|
}
|
|
|
|
public void ShowErrorBox(string message, Window owner)
|
|
{
|
|
CloseProgressView();
|
|
if (Application.Current != null)
|
|
{
|
|
Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
{
|
|
Helpering.ShowErrorBox(message, owner);
|
|
}));
|
|
}
|
|
}
|
|
|
|
public void ShowErrorBox(string message)
|
|
{
|
|
CloseProgressView();
|
|
if (Application.Current != null)
|
|
{
|
|
Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
{
|
|
Helpering.ShowErrorBox(message);
|
|
}));
|
|
}
|
|
}
|
|
|
|
public void ShowErrorBox(List<string> errors, List<string> warnings)
|
|
{
|
|
CloseProgressView();
|
|
if (Application.Current != null)
|
|
{
|
|
Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
{
|
|
string message = string.Empty;
|
|
foreach (string error in errors)
|
|
{
|
|
message += error + Environment.NewLine;
|
|
}
|
|
foreach (string warning in warnings)
|
|
{
|
|
message += warning + Environment.NewLine;
|
|
}
|
|
Helpering.ShowErrorBox(message);
|
|
}));
|
|
}
|
|
}
|
|
|
|
public void ShowWarningBox(string message)
|
|
{
|
|
CloseProgressView();
|
|
if (Application.Current != null)
|
|
{
|
|
Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
{
|
|
Helpering.ShowWarningBox(message);
|
|
}));
|
|
}
|
|
}
|
|
|
|
public void ShowWarningBoxWithoutCloseProgress(string message)
|
|
{
|
|
if (Application.Current != null)
|
|
{
|
|
Application.Current.Dispatcher.Invoke((Action)(() =>
|
|
{
|
|
IMessageBoxService confirm = new MessageBoxServiceViewModule();
|
|
confirm.IsKeepInProcessVisibility = true;
|
|
confirm.ShowWarning(message);
|
|
}));
|
|
}
|
|
}
|
|
|
|
protected void OnSendProgressDelegate(object content)
|
|
{
|
|
ShowProgressView((string)content);
|
|
}
|
|
|
|
#region 身份证验证
|
|
/// <summary>
|
|
/// 验证身份证号码是否正确
|
|
/// </summary>
|
|
/// <param name="idCard"></param>
|
|
/// <returns></returns>
|
|
protected bool CheckIdentify(string idCard)
|
|
{
|
|
var matchString = "";
|
|
if (idCard.Length == 15)
|
|
{
|
|
matchString = "^[1-9]\\d{7}((0[1-9])||(1[0-2]))((0[1-9])||(1\\d)||(2\\d)||(3[0-1]))\\d{3}$";
|
|
}
|
|
else if (idCard.Length == 18)
|
|
{
|
|
matchString = "^[1-9]\\d{5}[1-9]\\d{3}((0[1-9])||(1[0-2]))((0[1-9])||(1\\d)||(2\\d)||(3[0-1]))\\d{3}([0-9]||X)$";
|
|
}
|
|
if (string.IsNullOrEmpty(matchString))
|
|
return false;
|
|
var m = Regex.Match(idCard, matchString);
|
|
return m.Success;
|
|
}
|
|
protected bool CheckMobileIdentify(string mobile)
|
|
{
|
|
var m = Regex.Match(mobile, "^[1][358]\\d{9}$");
|
|
return m.Success;
|
|
}
|
|
|
|
protected string GetBirthday(string idCard)
|
|
{
|
|
if (string.IsNullOrEmpty(idCard))
|
|
return null;
|
|
if (!CheckIdentify(idCard))
|
|
return null;
|
|
if (idCard.Length == 15)
|
|
return "19" + idCard.Substring(6, 6);
|
|
if (idCard.Length == 18)
|
|
return idCard.Substring(6, 8);
|
|
return null;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|