background img

The New Stuff

Сохранения настроек приложения [LocalSettings]

Каждое более-менее серьезное приложение должно иметь возможность сохранять некие настройки, ранее я уже писал статью как сохранять настройки в xml, но это было для стандартных desktop-приложений, а сейчас речь идет о winRT. Сохранять настройки в metro приложениях оказалось так же просто как и их локализация, про которую я также писал. В этой статье расскажу про объект LocalSettings который предназначен для хранения простых данных, таких как int, float, bool, string ну и так дали.
Сами api-функции реализованы очень просто, вот посмотрите сами:
ApplicationData.Current.LocalSettings.Values["имя_ключа"] = его_содержимое;
Таким образом происходит запись данных (неправда ли просто), чтения данных так же просто:
переменная = (преобразования_в_исходный_тип)ApplicationData.Current.LocalSettings.Values["имя_ключа"];
Вот так, все просто, для ясности сейчас создадим новое приложения которое будет сохранять разные данные и режимы компонентов. Создайте новое приложения типу BlankApp и добавьте на страницу несколько CheckBox_ов, TextBox_ов (можете еще что та на ваше усмотрение) и кнопку, по нажатии на которую будет происходить сохранение настроек.
Для удобности создадим метод по имени WriteSettings и поместим в него следующий код:
ApplicationData.Current.LocalSettings.Values["One"] = CheckBoxOne.IsChecked;
ApplicationData.Current.LocalSettings.Values["Two"] = CheckBoxTwo.IsChecked;
ApplicationData.Current.LocalSettings.Values["Three"] = CheckBoxThree.IsChecked;
ApplicationData.Current.LocalSettings.Values["Key"] = input.Text;
В нем происходит запись состояния каждого из наших CheckBox_ов и запись текста TextBox_ов. Далее обработайте события Click для нашей кнопки и вызовите только что созданный нами метод. Таким образом мы сохраним наши настройки. Для их чтения создайте отдельный метод ReadSettings и напишите следующий код:
input.Text = (string)ApplicationData.Current.LocalSettings.Values["customKey"];
CheckBoxOne.IsChecked = (bool)ApplicationData.Current.LocalSettings.Values["One"];
CheckBoxTwo.IsChecked = (bool)ApplicationData.Current.LocalSettings.Values["Two"];
CheckBoxThree.IsChecked = (bool)ApplicationData.Current.LocalSettings.Values["Three"];
И чтоб настройки были активны при следующем запуске программы вызовите метод ReadSettings сразу же после инициализации. Компилируем и наслаждаемся ;)
Это самый простой способ хранения данных программы но все же он активно используется при разработке программного обеспечения, можно еще хранить данные в файловой системе, облаке (при этом производить синхронизацию между устройствами) но об этом позже, напишу. Вот и все о чем я сегодня хотел с вами поделится. Если возникнут какие то вопросы, пишите их в комментариях. Удачи в программировании.
UPD: При чтении настроек ВСЕГДА нужно делать проверку на null, я в этом сегодня удостоверился.
Каждое более-менее серьезное приложение должно иметь возможность сохранять некие настройки, ранее я уже писал статью как сохранять настройки в xml, но это было для стандартных desktop-приложений, а сейчас речь идет о winRT. Сохранять настройки в metro приложениях оказалось так же просто как и их локализация, про которую я также писал. В этой статье расскажу про объект LocalSettings который предназначен для хранения простых данных, таких как int, float, bool, string ну и так дали.
Сами api-функции реализованы очень просто, вот посмотрите сами:
ApplicationData.Current.LocalSettings.Values["имя_ключа"] = его_содержимое;
Таким образом происходит запись данных (неправда ли просто), чтения данных так же просто:
переменная = (преобразования_в_исходный_тип)ApplicationData.Current.LocalSettings.Values["имя_ключа"];
Вот так, все просто, для ясности сейчас создадим новое приложения которое будет сохранять разные данные и режимы компонентов. Создайте новое приложения типу BlankApp и добавьте на страницу несколько CheckBox_ов, TextBox_ов (можете еще что та на ваше усмотрение) и кнопку, по нажатии на которую будет происходить сохранение настроек.
Для удобности создадим метод по имени WriteSettings и поместим в него следующий код:
ApplicationData.Current.LocalSettings.Values["One"] = CheckBoxOne.IsChecked;
ApplicationData.Current.LocalSettings.Values["Two"] = CheckBoxTwo.IsChecked;
ApplicationData.Current.LocalSettings.Values["Three"] = CheckBoxThree.IsChecked;
ApplicationData.Current.LocalSettings.Values["Key"] = input.Text;
В нем происходит запись состояния каждого из наших CheckBox_ов и запись текста TextBox_ов. Далее обработайте события Click для нашей кнопки и вызовите только что созданный нами метод. Таким образом мы сохраним наши настройки. Для их чтения создайте отдельный метод ReadSettings и напишите следующий код:
input.Text = (string)ApplicationData.Current.LocalSettings.Values["customKey"];
CheckBoxOne.IsChecked = (bool)ApplicationData.Current.LocalSettings.Values["One"];
CheckBoxTwo.IsChecked = (bool)ApplicationData.Current.LocalSettings.Values["Two"];
CheckBoxThree.IsChecked = (bool)ApplicationData.Current.LocalSettings.Values["Three"];
И чтоб настройки были активны при следующем запуске программы вызовите метод ReadSettings сразу же после инициализации. Компилируем и наслаждаемся ;)
Это самый простой способ хранения данных программы но все же он активно используется при разработке программного обеспечения, можно еще хранить данные в файловой системе, облаке (при этом производить синхронизацию между устройствами) но об этом позже, напишу. Вот и все о чем я сегодня хотел с вами поделится. Если возникнут какие то вопросы, пишите их в комментариях. Удачи в программировании.
UPD: При чтении настроек ВСЕГДА нужно делать проверку на null, я в этом сегодня удостоверился.

0 коммент.:

Отправить комментарий

Popular Posts