2015-01-22 2 views
0

Есть ли способ сохранить только одну переменную по умолчанию в моих настройках? Я знаю, что есть команда Properties.Settings.Default.Save();, но я хочу сохранить изменение только одной из моих переменных Settings, а не всех из них.WPF: Как сохранить только одну переменную настройки?

+1

просто обновите только один токен перед вызовом Properties.Settings.Default.Save(). –

+0

Хорошо, но когда я меняю более одной из переменных Settings, и чем я хочу сохранить только один из них, есть ли способ приблизиться к этому? Я мог бы, возможно, сохранить значение этой переменной во временную переменную, чем перезагрузить настройки, а не сохранять только изменение этого ... – MartinVotruba

+0

Ну, почему вы хотите изменить значение параметра, если вы не хотите его сохранять? –

ответ

0

Нет, невозможно сохранить индивидуальное значение свойства в объекте Settings, создаваемом конструктором. Вы можете сохранить только весь объект или вообще ничего.

Обратите внимание, что настройки сохраняются в файле XML, что в любом случае приведет к тому, что выписать одно значение нецелесообразно. Обратите внимание, что запись этого XML-файла относительно дешева; это типично крошечный файл (если вы не сериализуете какую-то огромную часть данных в свой объект Settings) и могут быть написаны много раз, мало повлияет на производительность вашей программы (особенно если вы только пишете ее в ответ на действия пользователя и hellip , пользователи очень медленны, по сравнению с компьютером).

Вы должны, в общем, не отложить запись объекта Settings до выхода программы. Весьма целесообразно называть Settings.Default.Save() в любое время, когда будет изменен любой параметр (или группа настроек), чтобы убедиться, что настройки на самом деле сохраняются на диске независимо от того, что происходит позже в программе (например, он сбой).


Наконец, обратите внимание, что с точки зрения конкретного сценария – один флаг, который указывает, является ли или не показывать меню, а другой флаг, который указывает, является ли сохраняться это значение или нет – вам не обязательно нужно добавить еще другой флаг в другом месте и условно сохранить на основе первого флага.

Вместо этого просто сохраните два флага в объекте Settings, например. Settings.Default.RememberMenuVisibleSettings и Settings.Default.MenuVisible. Затем, когда вы запускаете свою первую программу, вы можете проверить RememberMenuVisibleSettings, и если она установлена ​​в false, просто введите MenuVisible в значение по умолчанию, переопределив все, что было сохранено в файле настроек. Тогда остальная часть вашей программы не должна беспокоиться об этом; после этого не должно возникать особой обработки любого флага. Вы можете просто сохранить как обычно, так и уверенность в том, что когда программа запустится снова, она пойдет правильно.

0

Ваш вопрос намекает на проблемы дизайна:

пользователи ожидают четкого абстракцию с настройками:

  • Загрузить все настройки при запуске программы
  • Возможно изменение параметров во время выполнения программы
  • сохранить все до выхода программы

Если вам нужно что-нибудь например «редактировать некоторые значения, но не сохранять в качестве настроек», тогда вы должны ввести дополнительный слой, который делает именно это: позволяет изменять некоторые значения без изменения настроек.

Смежные вопросы