Должен ли я наследовать от стековой панели вместо панели стека, сетки или другого элемента пользовательского интерфейса или UserControl? - PullRequest
0 голосов
/ 28 марта 2010

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

У меня нет большого опыта работы с WPF, но в ASP.NET вы всегда использовали UserControls, потому что они не были действительно универсальным UI-наследником для наследования (и в некотором смысле UserControl был просто div).

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

Так может ли кто-нибудь объяснить мне разницу от создания элемента управления, который наследуется от пользовательского элемента управления, по сравнению с наследованием непосредственно из стекаPanel?

Ответы [ 2 ]

1 голос
/ 28 марта 2010

Наследование от StackPanel - это только хорошая идея, если вы пытаетесь написать вариант на StackPanel.

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

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

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

Я рекомендую изучить этот урок и схему в статье Кристиана Мозера .

0 голосов
/ 28 марта 2010

Существует несколько разных уровней реализации элементов управления в WPF. Согласно книге "WPF в действии", можно использовать три метода:

  1. Пользовательские элементы управления. Это похоже на пользовательские элементы управления ASP.NET. То, что вы собираетесь создать элемент управления с помощью комбинации других элементов управления.
  2. Пользовательские элементы управления. Это предназначено для создания более герметичных и многократно используемых компонентов в различных проектах.
  3. FrameworkElement. Это еще более низкоуровневый материал.

Реализация звуков из Stackpanel аналогична подходу Custom Controls. Это действительно зависит от того, какой уровень контроля, сложности, многократного использования вам необходим при выборе между этими тремя подходами. Что по моему личному опыту:

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

Вернуться к вашему вопросу. Ответ зависит от того, что вам нужно. Если вы просто хотите что-то похожее на usercontrol в asp.net, то usercontrol в wpf. Я бы не наследовал стековую панель или сетку, за исключением того, что мне нужна альтернатива стековой панели или сетке, оставьте макет для беспокойства дизайнера.

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