【问题标题】:(Silverlight OOB) How to get the normal width and height of main window to save and restore them(Silverlight OOB)如何获取主窗口的正常宽度和高度以保存和恢复它们
【发布时间】:2010-09-13 03:47:00
【问题描述】:

我有一个浏览器外的小型应用程序,并希望使用 IsolatedStorageSettings.ApplicationSettings 在会话之间保存和恢复其窗口宽度+高度+状态。

我正在尝试保存这样的设置(在 Application_Exit 上):

IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings;
Window mainWindow = Application.Current.MainWindow;

appSettings["WindowTop"] = mainWindow.Top;
appSettings["WindowLeft"] = mainWindow.Left;
appSettings["WindowWidth"] = mainWindow.Width;
appSettings["WindowHeight"] = mainWindow.Height;
appSettings["WindowState"] = (UInt32)mainWindow.WindowState;

不好的是,当应用程序最大化时,此代码存储最大化窗口的宽度、高度、左侧和顶部,而不是正常大小/位置(最大化之前)。

我可以在某处获得正常的窗口大小和位置吗?

如果我在 Application_Startup 上有那个值,我可以设置正常大小/位置,然后设置 WindowState,这样窗口位置会在从最大化状态返回后正确恢复。

【问题讨论】:

    标签: silverlight silverlight-4.0 out-of-browser silverlight-oob


    【解决方案1】:

    在您的情况下,我会将 SizeChanged 事件挂在您的根元素上,并基于 WindowState 我将保存新的窗口大小或在窗口最大化时忽略它。

    【讨论】:

    • 在不调整大小的情况下改变窗口的位置怎么样?我也想存储主窗口的顶部/左侧。
    • silverlight 中的窗口类的功能非常有限。此时我想不出任何知道窗口位置何时改变的方法。您可以使用 DispatcherTimer 每 x 秒检查一次 Top/Left 属性,但这是相当不雅的解决方案
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2013-11-29
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多