2014-07-15 19 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