WPF - Автоматическое отключение Main в App.g.cs
Вопрос
Я изучаю WPF.
Я хочу предоставить свой собственный основной метод в моем App.xaml.cs вместо того, чтобы создавать его для меня в App.g.cs.Однако я продолжаю получать конфликты, потому что я не выяснил, как остановить создание дополнительного основного.
Есть ли параметр в моем файле проекта или где-либо еще, который управляет этим?
Решение
Я нашел ответ здесь. http://learnwpf.com/post/2007/12/13/How-can-I-provide-my-own-Main%28%29-method-in-my-WPF-application.aspx
Это так:
WPF знает, как создать метод Main() для конкретного файла xaml, с помощью свойства build action, установленного для App.xaml - у него есть действие сборки ApplicationDefinition .Изменив это на Page, WPF не создаст основной метод, и вы можете предоставить свой собственный в обычном файле класса, который вы добавляете в проект.
Однако в комментариях к вышеупомянутому блогу в комментарии отмечается, что могут возникнуть проблемы с blend и ссылками на него: http://blogs.msdn.com/expression/archive/2008/04/09/creating-a-wpf-blend-project-that-loads-resources-in-code.aspx .Я еще не до конца понимаю эти проблемы.
Другие советы
Вы также можете просто создать отдельный класс (например, Entry
), который отвечает за загрузку вашего приложения.Затем перейдите в настройки проекта и установите для вашего объекта запуска значение Entry
.Таким образом, вам даже не нужно отключать автоматически сгенерированный метод.
Самый простой способ - установить действие сборки в окне Свойств из ApplicationDefinition в Page для App.Xaml.
Затем вы можете определить свою собственную точку входа.
Я нашел решение:
- Скопируйте данные из вашего файла app.xaml
- Удалите файл app.xaml и создайте заново с тем же именем
- Создайте метод `main` в файле .cs и вставьте в него свой старый скопированный код
Один из способов - отказаться от определения производного от приложения класса в XAML, чтобы вы могли вручную определить основной метод в соответствии с вашими пользовательскими требованиями
Самый простой способ - просто создайте класс, подобный Startup.cs, с помощью build action для компиляции и удалите ApplicationDefinition из App.xaml, преобразуйте его в page и удалите его из любого другого файла в приложении