Рекомендации по созданию формы WPF для изменения пользовательских настроек
Я совершенно новичок в C# и получил задание, создающее форму WPF для изменения настроек в существующей программе на C# с использованием Visual Studio и WPF.
У меня много целей:
- Получить список всех имен настроек.
- Получить все пользовательские свойства.
- Добавьте строку для каждого параметра в форму и разрешите пользователю восстановить исходные параметры, использовать текущие или изменить их на новое значение.
- Убедитесь, что пользовательский ввод имеет правильный тип.
- Связывайте между TextBox и значениями в строке, не зная, как лучше отправить детали. Какой объект вы рекомендуете связать с xaml? Список, содержащий строки свойств? Или связать каждую строку отдельно?
Я думаю, что мне нужно получить доступ к файлу App.config для 3, пока безуспешно. Я хотел бы получить совет об архитектуре, так как я новичок в VS, C# и WPF.
1 ответ
Я не думаю, что это назначение подходит для кого-то нового в wpf, не говоря уже о C#. Даже опытные разработчики wpf могут найти некоторые хитрости в этой задаче.
app.config будет в той же папке, что и ваш exe. Если это в программных файлах, вы не сможете редактировать и сохранять. Если ваши пользователи не выигрывают 7 или более ранние.
По этой причине пользовательские настройки обычно хранятся в appdata. Поскольку ожидается, что пользователь, вероятно, захочет изменить их. Они идут в файле user.config. Расположение одного из моей системы:
C: \ Users \ Andrew \ AppData \ Local \ MapEditor \ MapEditor.exe_Url_aszfdqs5110y44xmg0kfuuqbatf5la5a \ 1.0.0.0 \ user.config
Я пользователь Эндрю на машине, и это пользовательские настройки для MapEditor.exe.
Сам файл является XML.
Там я вижу
И внутри есть куча вещей.
Я бы не пытался редактировать XML напрямую. И это ваш первый бит, который вы найдете не совсем просто. Потому что вам нужно перевести xml. "Все пользовательские свойства." Вы, вероятно, знаете, что они есть. Потому что пользователь не может просто добавить их. Они должны быть определены в приложении.
Я бы выбрал части, которые вы хотите, чтобы они изменили, и скопировал данные в модель представления. Или наблюдаемая коллекция моделей представления, представленная родительской моделью представления. Вероятно, самый простой в качестве наблюдаемой коллекции. Затем вы можете иметь другой класс viewmodel для каждого типа свойства. Они вводят строку в число, после чего она не может быть перенесена обратно в модель представления, и вы можете перехватывать validation.errors, который будет пузыриться. Чтобы сохранить, переведите viewmodels обратно в xml и сохраните его.