Добавление новых классов в wpf - PullRequest
0 голосов
/ 30 октября 2011

Как я могу расширить реализацию wpf, используя мои собственные классы?В частности, я хочу создать новые классы C # на wpf помимо тех, которые являются производными от App.xaml и MainWindow.xaml.Должен ли я добавить их непосредственно в проект?Если да, могу ли я использовать ссылки на элементы MainWindow внутри них, чтобы настроить их функциональность и добавить новые задачи?Должны ли они быть производными от класса MainWindow?

Каков обычно наиболее разумный способ расширить реализацию wpf на другие новые классы?

Ответы [ 2 ]

0 голосов
/ 30 октября 2011

В конечном итоге вы должны получить хорошую книгу по WPF, прочитать ее и набрать все примеры в своем редакторе.Простая попытка погрузиться в API без какого-либо примера и без понятия о том, как работает архитектура, не приведет вас к чему-то очень быстрому.

Однако, чтобы ответить на ваши конкретные вопросы:

Должны ли они быть производными от класса MainWindow?

Нет.Чтобы написать графический интерфейс для приложения WPF, вам редко придется использовать наследование, которое еще не написано для вас, когда Visual Studio генерирует новое приложение, новое окно или новый пользовательский элемент управления.

Это может привести кимеет смысл использовать наследование в вашем коде где-то, но редко в самом коде GUI, и уж точно не на уровне окна или приложения.Единственное ручное использование наследования будет для реализации пользовательских элементов управления WPF (наименее частый и самый болезненный вариант для расширения вашего GUI).

Как я могу расширить реализацию wpf, используя мои собственные пользовательские классы?

Не ясно, что вы пытаетесь сделать, поэтому я постараюсь охватить все дела.

UI

Если вам нужно новое приложение, обычно вы вообще не производите от определенного класса приложений, вы просто создаете новый проект WPF (целую программу).Затем Visual Studio создаст для вас новые классы, которые наследуются от Application и Window.

Если вам нужно новое окно, то же самое верно.Вы просто скажете Visual Studio создать новое окно, и ваши классы будут автоматически созданы для вас, и они будут наследоваться от Window.

Если вы хотите добавить существующие элементы управления в окно, сделайтене вытекает из чего-либо.Перейдите к дизайнеру пользовательского интерфейса и перетащите элементы управления из панели инструментов на страницу.Или отредактируйте XAML для этого окна напрямую.

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

Если вы пытаетесь настроить внешний вид приложения или элементов управления,обычно вы используете шаблоны данных, стили, пользовательские элементы управления и пользовательские элементы управления в том порядке, в котором они встречаются по частоте и сложности.За исключением пользовательских элементов управления, ни один из них не включает в себя написанное вручную наследование.Когда вы добавляете пользовательский элемент управления в WPF, Visual Studio напишет класс, который наследует от чего-то, но вам не нужно беспокоиться об этом факте.

Non-UI

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

Хорошей практикой является отделение вашего пользовательского интерфейса от основных функций вашего приложения.Таким образом, если выйдет совершенно новая технология, вы можете убрать пользовательский интерфейс и добавить в новую программу.Или, если вы решите поместить эти кишки на веб-страницу, это также будет возможно.

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

Это означает, что вы не будете наследовать от каких-либо классов пользовательского интерфейсадля того, чтобы реализовать внутренности вашего приложения.

0 голосов
/ 30 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...