2014-07-15 22 views
0

我试图将旧的Windows窗体代码转换为wpf。我的每个窗口都存储了可见性状态,大小和位置,并在应用程序的下一次运行中恢复了这些状态。我连接到可能获取关于closereason的信息的FormCloseQuery事件。这在WPF中是不可能的。WPF在下次启动时恢复可见性状态

我可以将位置和大小存储在WPF窗体的关闭事件中,但不可能存储可见性状态。

有没有答案如何做到这一点?

感谢 马丁

+0

这些问题可以帮助你: http://stackoverflow.com/questions/11169103/how-to-save-wpf-ui-state http://stackoverflow.com/questions/ 3784477/c-sharp-approach-for-saving-user-settings-in-a-wpf-application?lq = 1 –

+0

@cellz,*你认为你的任何一个链接问题都会帮助他们解决'能见度“,还是你没有读过这个问题? – Sheridan

回答

1

我可以存储在WPF的形​​式关闭事件的位置和大小,但它不是可以存储可见性状态。

Poppycock!有什么不对的Window.Visibility财产?:

private void MainWindow_Closing(object sender, CancelEventArgs e) 
{ 
    // this.Visibility is the current visibility state of the Window 
} 

此外,对于您的信息,这是一个更好的主意来处理Window.Deactivated事件每个应用程序超出对焦的时间来更新值,或Window.Closed事件来更新在关闭时。 Closing事件专门用于取消关闭请求。

此外,在WPF中也习惯于存储bool值,然后使用BooleanToVisibilityConverter Class将数据绑定到Window.Visibility属性。

+0

嗨谢里登。感谢评论。你说得对,我正在使用Closed事件而不是Closing。问题是当用户手动关闭窗口或退出应用程序时由应用程序关闭窗口时会调用Closed。如果手动关闭,我不想打开窗口。如果它被应用程序关闭,它应该显示在下一步。 Winforms中的CloseReason帮助我解决了这个问题,但无法检测WPF窗口是如何关闭的。 – msedi

+0

*无法检测WPF窗口如何关闭* ...任何事情都是可能的。 – Sheridan