Patrick Skelton Ответов: 1

Почему приложение.параметры конфигурации недоступны, используя инструкции на MSDN?


Привет,

Я пытался следовать инструкциям MSDN по добавлению настроек в мое настольное приложение WPF. Я добавил параметр с помощью конструктора, в результате чего создается файл с именем myapp.exe-файла.config в \мусорное ведро выходной каталог проекта. Открыв этот файл, я нахожу свою настройку. Пока все хорошо.

Затем я перехожу на эту страницу Доступ к настройкам во время выполнения, который объясняет, как читать настройку во время выполнения. Проблема в том, что у меня есть Properties экземпляр в моем конструкторе приложения, но он не имеет Settings член?

Что я делаю не так?

Добрые пожелания ~ Патрик

Что я уже пробовал:

Я попытался следовать документации MSDN.

G3Coder

Привет Патрик,

Не могу найти ничего в MSDN, объясняющего это. Мне кажется, что данные еще не загружены.

Даже попытка с системой.Конфигурация.Конфигурационный менеджер.AppSettings не дает никаких правильных результатов.

В зависимости от того, почему и как я предлагаю старый школьный файл, хранящий настройки.

Удачи.
Г

Patrick Skelton

Спасибо за ответ. У вас есть какие-нибудь идеи, почему эти свойства.Настройки участника даже не присутствуют? Вы думаете, что врачи ошибаются?

G3Coder

Я не думаю, что он еще не был инициализирован, так что .Settings еще не существует. В документах не говорится, что вы можете сделать это точно - больше они показывают примеры, когда все работает и работает, поэтому я бы с трудом сказал, что они ошибаются.
собственность.Метод Settings работает в конструкторе MainWindow () в соответствии с документацией.

Patrick Skelton

Вы совершенно правы, сэр. Пример MSDN отлично работает при перемещении в Главное окно. Мне кажется, это довольно серьезный недостаток. Мое требование получить доступ к настройкам до отображения первого окна не кажется необоснованным. На самом деле я хочу изменить StartupUri в зависимости от настроек, поэтому мне придется обойти это. Спасибо вам за помощь.

G3Coder

Удовольствие :) Наслаждайся выходными.

1 Ответов

Рейтинг:
12

Richard Deeming

Проблема в том, что то System.Windows.Application класс[^] имеет свойство называется Properties[^], который скрывает ваше приложение. Properties пространство имен. Любой код внутри Application класс, который пытается получить доступ Properties смотрит на свойство, а не на пространство имен.

Чтобы обойти эту проблему, вы можете использовать полное имя для ссылки на настройки:

var aSetting = YourNamespace.Properties.Settings.Default.SomeSetting;

или вы можете добавить псевдоним для Settings класс:
namespace YourNamespace
{
    using Settings = Properties.Settings;
    
    public partial class YourApplication : Application
    {
        public YourApplication()
        {
            var aSetting = Settings.Default.SomeSetting;
        }
    }
}


Patrick Skelton

Идеально! Спасибо.