Шаблон для windows forms

Шаблон для windows forms

80948 просмотра

10 ответа

MVVM чаще всего используется с WPF, потому что он идеально подходит для него. Но как насчет Windows Forms? Существует ли уже установленный и часто используемый шаблон подхода / дизайна, подобный этому, для Windows Forms? Тот, который явно работает с Windows Forms? Есть книга или статья, которая описывает это хорошо? Может быть, MVP или MVC на основе?

Ответы (10)

89 плюса

Я пробовал MVP, и он, кажется, отлично работает с окнами форм тоже. В этой книге приведен пример оконных форм с шаблоном MVP (пример приложения для расчета заработной платы). Приложение не так сложно, но даст вам представление о том, как его создать.

Вы можете получить исходный код в Source Code

РЕДАКТИРОВАТЬ:

Существуют две разновидности схемы MVP (а) пассивный вид и (б) контролирующий контроллер

Для сложных сценариев привязки данных я предпочитаю использовать паттерн Supervising controller. При контроле структуры контроллера ответственность за привязку данных возлагается на представление. Таким образом, для дерева / таблицы данных это должно быть в соответствующих представлениях, только презентатор должен передавать только логику, не зависящую от вида.

Я рекомендую взглянуть на следующую структуру MVP MVC # — Структура MVP

Не используйте имя (это фреймворк MVP).

Простые winforms видео MVP Winforms — MVP

Пример работы с выпадающим списком MVP — DropDownList

Простой пример привязки дерева (привязка бедняка). Вы можете добавить любую логику, специфичную для дерева, в BindTree ().

Ниже приведен фрагмент кода . не проверено, напрямую введено из мысли .

13 плюса

Как уже говорилось, я всегда работал в шаблоне MVP при использовании Winforms. Но шаблон дизайна, который вы будете использовать, не означает, что вы будете использовать правильно. Существует множество анти-паттернов, прикрепленных к MVP.

Если вы хотите, чтобы все было хорошо запущено, вы должны использовать инфраструктуру для создания умного клиента. Поэтому я рекомендую использовать этот дизайн и методы: Smart Client Software Factory http://www.codeplex.com/smartclient

Надеюсь это поможет

Автор: alexl Размещён: 12.03.2009 04:05

9 плюса

Model-View-ViewModel (MVVM) шаблон является шаблоном. По определению шаблон проектирования показывает общее решение в объектно-ориентированном мире, и это решение может применяться на различных платформах (WPF, WinForms, Java Swing и т. Д.). Я согласен, что MVVM лучше всего использовать с WPF, потому что он использует возможности сильного связывания. Однако Windows Forms также поддерживает привязку данных.

WAF Windows Forms адаптер показывает , как применить MVVM шаблон в приложение под управлением Windows Forms.

Автор: jbe Размещён: 20.09.2010 06:06

5 плюса

Я писал о вариациях шаблонов проектирования MVP / MVVM, называемых MVP-VM, которые являются индивидуальным решением для приложений winforms, которые требуют полного охвата тестирования и используют привязку данных в качестве основного механизма для обновления презентации с данными модели.

MVVM (Model View View Model) представляет аналогичный подход для отделения представления от данных в среде, которая обеспечивает привязку данных (WPF). Поскольку .NET Framework 2.0 уже предлагает расширенную инфраструктуру привязки данных, которая также позволяет привязывать время разработки объектов приложения — сущность «Модель представления» вполне может вписаться в среду на основе MVP.

4 плюса

Читайте также:  Установка linux только курсор

Я задал этот же вопрос двум моим техническим сотрудникам: возможен ли MVVM для WindowsForms? Оба дали мне один и тот же ответ: « Ни в коем случае! В WindowsForms отсутствуют богатые привязки WPF и Silverlight (OneTime, OneWay, TwoWay, OnewayToSource), а также отсутствуют преобразователи типов ».

  • Шаблон активатора экрана для WindowsForms — вы можете найти его здесь , портированный с Caliburn.Micro by jagui
  • Rich Bindings и TypeConverters — ферма от Кента Бугаарта, делает это независимо от пользовательского интерфейса
  • Команды — WPF Application Framework (WAF) имеет проект WafWinFormsAdapter, который заботится о некоторых вещах MVVM, а именно о командах

Опять же, мы можем иметь MVVM для WinForms? Да мы можем. У нас есть все кусочки. Мы просто должны склеить их вместе.

4 плюса

Я считаю, что MVP является шаблоном, хорошо подходящим для разработки WinForms — о чем частично свидетельствует его использование в CAB — платформе Microsoft для WinForms.

Я использую MVP в WinForms для извлечения кода из View — потому что я не могу протестировать код View. А также для включения кода, который необходимо повторно использовать (или дублировать), чтобы он оставался вне представления, где он не может быть предоставлен для общего доступа.

Я могу сослаться на свой собственный проект, где я использую шаблон MVP ExceptionReporter.NET . Хотя я уверен, что я не использую это идеально.

Вы упомянули MVVM, работающий на WPF — я думаю, что причина этого в сильной поддержке привязки данных. Если вы не используете привязку данных в WPF (и это, конечно, не обязательно), вы можете выбрать MVP. Дело в том, что MVP — это хороший выбор для любого клиентского приложения. И, возможно, «лучший» выбор, даже в WPF, если вы планируете делиться кодом между проектами, которые не являются WPF.

Для получения дополнительной информации о ценности использования MVP в WinForms см. Видеопрезентацию Boodhoo об использовании MVP: http://www.bestechvideos.com/2008/06/29/dnrtv-show-14-jean-paul-boodhoo-on-model -view-Presenter И статья MSDN того же автора по адресу http://msdn.microsoft.com/en-us/magazine/cc188690.aspx

3 плюса

Метод BindTree кажется мне немного ошибочным. Внезапно Вид знает о Модели. Это хорошо? Там должно быть тонны людей, сталкивающихся с такими проблемами. Я удивлен, что нет книг об этом. Поскольку в мире .NET есть книги обо всем.

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

Теперь класс Model может быть плохим выбором имени в примере, который дает Раджеш. Это может быть TreeData или RecordsData. Как бы вы это ни определяли, в нем есть то, что вам нужно, используя механизм привязки Winforms, чтобы привязать определенный элемент управления к базовым данным.

Лучший сайт для просмотра такого рода материалов находится здесь . Мартин Фаулер собрал множество полезных шаблонов дизайна пользовательского интерфейса и шаблонов корпоративного дизайна.

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

В моем собственном приложении (приложения CAD / CAM, используемые для работы металлорежущих станков) моя структура выглядит следующим образом.

  • Формы, реализующие интерфейсы форм
  • UIDLL с представлениями, реализующими интерфейсы представления, которые взаимодействуют с формами через интерфейс формы. Определенные представления регистрируются в UIViewDLL. Представления выполняют объекты команд, найденные в библиотеках команд, которые взаимодействуют с моделью.
  • Командные библиотеки; списки команд, реализующих ICommand. Команда, которая взаимодействует с представлениями, делает это через интерфейсы, представленные в UIViewDLL.
  • UIViewDLL; предоставляет интерфейсы просмотра, используемые командами.
  • Модель; классы и коллекции, которые составляют основные структуры данных моего приложения. Для меня это такие вещи, как материал, траектории, формы, листы, факелы и т. Д.
  • Полезность; DLL, которая обычно использует служебные классы, используемые моей компанией, которые охватывают различные приложения. Например, сложные математические функции.
Читайте также:  Службы iis windows 2003

Автор: RS Conley Размещён: 12.03.2009 01:46

3 плюса

Вы можете использовать Enterprise Architecture, Patterns и Practices в качестве отправной точки, хотя они немного устарели.

Под Общим руководством находится Архитектура приложений для .NET: Проектирование приложений и сервисов , которая является хорошим введением в способы .NET и многоуровневое N-уровневое приложение.

Для более формальных «шаблонов» существуют шаблоны корпоративных решений с использованием Microsoft .NET . (источник: microsoft.com )

2 плюса

Первое хорошее объяснение шаблонов дизайна пользовательского интерфейса, которое я прочитал, было в блоге Джереми Миллера — Создание вашей собственной CAB . В нем описаны общие шаблоны — пассивный просмотр, MVP и т. Д., А также рассматриваются некоторые способы их реализации в C #.

Автор: Jeremy Размещён: 12.03.2009 05:42

1 плюс

Вы можете попробовать MugenMvvmToolkit, который позволяет использовать «чистый MVVM» для WinForms. В связи с тем, что он поддерживает привязки на всех платформах, все встроенные функции привязки, доступные для платформы WPF, доступны на всех платформах (включая WinForms).

Шаблоны проектов и элементов Project and item templates

Шаблоны проектов и элементов предоставляют многократно используемые заглушки, обеспечивающие пользователям определенный базовый код, и структуры, которые можно использовать в своих целях. Project and item templates provide reusable stubs that give users some basic code and structure, that they can customize for their own purposes.

шаблоны Visual Studio Visual Studio templates

При установке Visual Studio устанавливается ряд предопределенных шаблонов проектов и элементов. A number of predefined project and item templates are installed with Visual Studio. Эти шаблоны, такие как Веб-приложение ASP.NET и Библиотека классов, доступны для выбора при создании проекта. These templates, such as the ASP.NET Web Application and Class Library templates, are available to choose from when you create a new project. Шаблоны элементов, такие как файлы кода, XML-файлы, HTML-страницы и таблицы стилей, отображаются в диалоговом окне Добавление нового элемента. Item templates, such as code files, XML files, HTML pages, and Style Sheets, appear in the Add New Item window.

Для пользователей эти шаблоны представляют собой отправную точку, с которой можно начать создание новых проектов или расширение текущих проектов. These templates provide a starting point for users to begin creating projects, or to expand existing projects. Шаблоны проектов предоставляют файлы, необходимые для конкретного типа проекта, включая стандартные ссылки на сборки, задают свойства проекта и параметры компилятора по умолчанию. Project templates provide the files that are required for a particular project type, include standard assembly references, and set default project properties and compiler options. По сложности шаблоны элементов могут варьироваться от одного пустого файла с определенным расширением до нескольких файлов исходного кода, которые содержат код заглушек, файлы сведений о конструкторе и внедренные ресурсы. Item templates can range in complexity from a single empty file that has a certain file extension, to multiple source code files with stub code, designer information files, and embedded resources.

Читайте также:  Сетевой адаптер не имеет допустимых параметров настройки ip windows 10 как исправить wifi

Вы можете использовать установленные шаблоны, создавать собственные шаблоны, а также скачивать и использовать шаблоны, созданные сообществом. You can use installed templates, author your own custom templates, or download and use templates created by the community. Дополнительные сведения см. в статьях Практическое руководство. Создание шаблонов проектов и Практическое руководство. Создание шаблонов элементов. For more information, see How to: Create project templates and How to: Create item templates.

Содержимое шаблона Contents of a template

Все шаблоны проектов и элементов, установленные с Visual Studio или созданные пользователем, работают на основе одних и тех же принципов и имеют схожее содержимое. All project and item templates, whether installed with Visual Studio or created by you, function using the same principles and have similar contents. Все шаблоны содержат следующие элементы: All templates contain the following items:

  • Файлы, создаваемые при использовании шаблона. The files to be created when the template is used. Сюда входят файлы с исходным кодом, внедренные ресурсы, файлы проектов и т. д. These files include source code files, embedded resources, project files, and so on.
  • Файл VSTEMPLATE, который содержит метаданные, необходимые для создания проекта или элемента из шаблона, а также для отображения шаблона в окнах Новый проект и Добавление нового элемента. A .vstemplate file, which contains the metadata needed to create a project or item from the template and to display the template in the New Project and Add New Item windows.
  • Файл VSTEMPLATE, который содержит метаданные, необходимые для создания проекта или элемента из шаблона, а также для отображения шаблона на странице Создание проекта и в диалоговом окне Добавление нового элемента. A .vstemplate file, which contains the metadata needed to create a project or item from the template and to display the template on the Create a new project page or in the Add New Item dialog box.

Дополнительные сведения о VSTEMPLATE-файлах см. в статьях о тегах шаблона и параметрах шаблона. For more information about .vstemplate files, see Template tags and Template parameters.

Если эти файлы сжаты в ZIP-файл и помещены в соответствующую папку, Visual Studio автоматически отображает их в следующих расположениях: When these files are compressed into a .zip file and put in the correct folder, Visual Studio automatically displays them in the following places:

  • Шаблоны проектов отображаются в окне Новый проект. Project templates appear in the New Project window.
  • Шаблоны проектов отображаются на странице Создание проекта. Project templates appear on the Create a new project page.
  • Шаблоны элементов отображаются в окне Добавление нового элемента. Item templates appear in the Add New Item window.

Дополнительные сведения о папках шаблонов см. в статье Практическое руководство. Размещение и упорядочение шаблонов. For more information about template folders, see How to: Locate and organize templates.

Оцените статью