0

У меня есть небольшое приложение, отличное от браузера, и вы хотите сохранить и восстановить его ширину окна + высоту + состояние между сеансами, используя IsolatedStorageSettings.ApplicationSettings.(Silverlight OOB) Как получить нормальную ширину и высоту главного окна, чтобы сохранить и восстановить их

Я пытаюсь сохранить настройки, как это (на 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, поэтому положение окна будет восстановлено правильно после возвращения из максимизированного состояния.

ответ

1

В вашем случае я бы связал событие SizeChanged с вашим корневым элементом и на основе WindowState. Я бы сохранил новый размер окна или проигнорировал его, если окно максимально.

+0

Как изменить положение окна без изменения размера? Я хочу сохранить Top/Left из главного окна. – Andrew

+0

Класс Window в silverlight имеет очень ограниченную функциональность. В это время я не могу придумать никакого способа узнать, когда изменится положение окна. Вы можете проверить свойства Top/Left один раз каждые x секунд, используя DispatcherTimer, но это довольно неэлегантное решение – Denis

+0

Большое спасибо, Денис – Andrew