1、单例窗体不能够close,close后下次就再也不能打开了。只能通过重写OnClosing方法进行隐藏处理
protected override void OnClosing(CancelEventArgs e)
{
this.Hide();
e.Cancel = true;
}
2、窗体隐藏后,再次show出来的时候,重新给界面binding新的值,并不能够及时的显示出来,而是先显示了上一次操作的数据,界面一闪才出现本次要展示的内容,而wpf本身并没有很好的处理方法。
我通过摸索,发现通过控制窗体的最大化和最小化能够刚好去触发windows对桌面元素进行重绘的机制,能够及时的去刷新,达到肉眼可见的更改。
这里我首先在重写OnClosing事件中,将窗体Hide,隐藏后先设置窗体最小化,其次初始化界面元素绑定显示的内容,在将窗体最大化。在这过程中,窗体并没有显示出来,实际上窗体界面内容却已经是刷新过的了。
/// <summary>
/// 当窗口关闭的时候
/// </summary>
/// <param name="e"></param>
protected override void OnClosing(CancelEventArgs e)
{
//卸载事件
this.Hide();
//设置窗体最小化在最大化能够立即刷新界面显示
instance.WindowState &