自己记录一下怕自己以后都忘记了。
言归正传,控制页面的关闭,我首先想到的就是在每一个页面里面添加一个关闭事件,但是这样太过于繁琐了。然后就各种网上找资料,找了很久也没有找到合适的方法。
为了不过于繁琐的去写,在思考着个问题的时候,突然灵光乍现,想到了一个取巧的方法。
首先把所有要用到的页面根据名字都注入到容器里面去。
申明一个容器
static ContainerBuilder _Builder;//申明容器
把页面注入到容器里面去
分别是 窗口、窗口类型、窗口名称
_Builder.RegisterType<SysUserDialog>().Named<Window>("员工管理弹窗");
然后添加一个弹窗的帮助类
DialogHelper
然后在定义一个字典用于存放页面信息,字典的Key值为窗口的名称Value为存放的页面
public static Dictionary<string, Window> Dic { get; set; }
在帮助类中创建两个方法
/// <summary>
/// 页面打开
/// </summary>
/// <param name="NodeName">打开页面名称</param>
/// <param name="OpenType">打开类型</param>
public static void DialogOpen(string NodeName, OpenType OpenType)
{
Dic = new Dictionary<string, Window>();
var SelectedView = InitAutofac.GetFromFac<Window>(NodeName);
Dic.Add(NodeName, SelectedView);
if (OpenType == OpenType.Show)
{
SelectedView.Show();
}
else
{
SelectedView.ShowDialog();
}
}
/// <summary>
/// 页面关闭
/// </summary>
/// <param name="NodeName">关闭页面名称</param>
public static void DialogClose(string NodeName)
{
var SelectedView = Dic.First(s => s.Key == NodeName).Value;
SelectedView.Close();
}
下面的这段话 就是根据窗口名字取容器里面取出窗口,至于方法里面是怎么写的,在这个地方我就不多说了。百度也能百度到很多种。
var SelectedView = InitAutofac.GetFromFac<Window>(NodeName);
这样就可以在任何页面调用页面的打开和关闭
打开页面
DialogHelper.DialogOpen("员工管理弹窗", OpenType.ShowDialog);
关闭页面
DialogHelper.DialogClose("员工管理弹窗");
当然我也不知道这种写法有没有大佬们做过,如有雷同,纯属巧合。哈哈哈哈