Где разместить код (в основном) безоконный WPF-приложение? - PullRequest
2 голосов
/ 23 июня 2009

Итак, я планирую написать приложение, которое в значительной степени является приложением без окон. Будут окна для взаимодействия с пользователем, но только по желанию пользователя. В противном случае приложение находится в системном трее и запускает таймер, выполняя некоторую логику каждую минуту или около того. У меня такой вопрос: насколько я могу судить, я поместил бы всю связанную логику в App.xaml.cs (запуск таймера, выполнение логики через каждый интервал), но по какой-то причине это кажется мне неправильным.

Приложение будет иметь значок в системном трее, с которым пользователи могут взаимодействовать, чтобы получить подробную информацию, настроить параметры и т. Д., Но в остальном приложение просто сидит там и делает то, что делает. Целесообразно ли поместить весь код в выделенный код для класса App.xaml? Я не знаю почему, но кажется, что не должен, и должно быть где-то еще, но я ничего не могу придумать.

Я никогда раньше не писал такое приложение, отсюда и мое невежество. Любой совет будет принята с благодарностью. Спасибо.

Джеймс

Ответы [ 2 ]

2 голосов
/ 23 июня 2009

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

То же самое касается приложений, которые большую часть времени не показывают пользовательский интерфейс. Большинство действий будут инициированы из App.xaml.cs, но это не означает, что весь код должен там жить. Вы можете инкапсулировать таймеры в свои собственные классы, которые могут запускать другой код, например, для работы. Разделите ваш код по линиям ответственности, класс окна выполняет работу с пользовательским интерфейсом, логика домена переходит в другие файлы и т. Д. Это позволит вам создавать более поддерживаемые приложения.

1 голос
/ 23 июня 2009

Звучит не так, как будто код принадлежит там, и, самое большее, просто вызов для запуска таймеров. То, что кажется идеально подходящим для ваших задач, это шаблон M-V-VM (Модель - Вид - ViewModel). Как вы заметили, он также будет «чувствовать» более корректно, чем присоединение логики к вашему коду. Используя MVVM, вы можете разделить свой разреженный пользовательский интерфейс в View, и ваш код может существовать отдельно в Model и ViewModel.

Я бы рекомендовал использовать инструментарий здесь , так как он также содержит хорошие обзорные документы и пример, который вы можете переварить при создании собственного решения. Laurent Bugnion также выпустил стартовый набор инструментов MVVM, который можно использовать для начала работы.

Кроме того, здесь - это несколько полезных вещей, которые помогут вам начать настройку элементов управления в системном трее.

...