using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Aucma.Core.Palletiz.Common { /// <summary> /// 窗口管理器 /// </summary> public class WindowManager { static Dictionary<string, WindowStruct> _regWindowContainer = new Dictionary<string, WindowStruct>(); /// <summary> /// 注册类型 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="name"></param> /// <param name="owner"></param> public static void Register<T>(string name, System.Windows.Window owner = null) { if (!_regWindowContainer.ContainsKey(name)) { _regWindowContainer.Add(name, new WindowStruct { WindowType = typeof(T), Owner = owner }); } } /// <summary> /// 获取对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="name"></param> /// <param name="dataContext"></param> /// <returns></returns> public static bool ShowDialog<T>(string name, T dataContext) { if (_regWindowContainer.ContainsKey(name)) { Type type = _regWindowContainer[name].WindowType; //反射创建窗体对象 var window = (System.Windows.Window)Activator.CreateInstance(type); window.Owner = _regWindowContainer[name].Owner; window.DataContext = dataContext; return window.ShowDialog() == true; } return false; } } public class WindowStruct { public Type WindowType { get; set; } public System.Windows.Window Owner { get; set; } } }