Какой смысл в макетах / панелях?

#c# #wpf

#c# #wpf

Вопрос:

Я только начал изучать WPF, и чтобы добавить элементы управления в окно, я просто перемещаю их из панели инструментов в окно. Затем я могу продолжить перемещать их, чтобы поместить их в нужные мне места. Теперь я изучил макеты / панели, стековые панели, холст, док-панели и т. Д., И я изо всех сил пытаюсь понять, почему они полезны, если вы можете просто перетаскивать и перемещать объекты / элементы управления на экране самостоятельно.

Например, dock panels , используя свойство dock, вы можете поместить объект слева, справа, снизу, сверху, lastchildfill. Вы можете закрепить текстовое поле слева, используя свойство DockPanel .Dock = «Left», но почему я не могу просто переместить его туда сам?

Комментарии:

1. Да, вы можете, но обратите внимание, что он может вести себя по-разному при изменении размера окна. Взгляните на описание различных контейнеров здесь: msdn.microsoft.com/en-us/library /… и вот: codeproject.com/Articles/140613 /.

2. Panel Контейнер позволяет вашим макетам быть намного более гибкими с динамическим размером и содержимым. StackPanel Например, с помощью a вы можете легко добавлять в него содержимое из кода. Панели также позволяют упростить параметры выравнивания (по центру, сверху и т. Д.), Которые идеально выровняют ваши элементы управления для вас. Зачем делать это самому! 🙂

Ответ №1:

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

Вы видите, к чему это ведет? Не перетаскивайте элементы управления при разработке приложений WPF! Каждая конференция, на которой я был, подчеркивает этот факт! Панели сетки являются огромной частью макетов WPF и имеют решающее значение для того, чтобы ваши элементы управления оказались там, где вы ожидаете.

Самое сложное в изучении WPF — понять, что это не WinForms с красивой графикой. Это совершенно другой зверь с крутой кривой обучения! Ручное кодирование XAML поначалу чрезвычайно утомительно, но как только вы узнаете имена всех элементов управления и важных свойств, вы будете запускать пользовательские интерфейсы намного быстрее, чем старый метод перетаскивания.

Комментарии:

1. Я полностью согласен с вами. Я работал над проектом в WPF, и мы никогда не использовали конструктор. Все было закодировано в XAML. В сочетании с шаблоном MVVM разработка WPF была одним из лучших фреймворков, с которыми мне приходилось работать.

Ответ №2:

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

Пожалуйста, взгляните на описание в MSDN и в CodeProject, которое описывает различные типы контейнеров.