Как я могу запретить конструктору VS WPF добавлять поля для каждого объекта из панели инструментов

Когда я перетаскиваю элемент управления из панели инструментов на поверхность конструктора WPF Visual Studio 2008, он устанавливает поле в зависимости от того, где я его поместил, и размера по умолчанию.

Есть ли способ предотвратить их установку VS? Когда я перетаскиваю элемент управления на панель стека, я хочу, чтобы он перетекал в существующие элементы управления на панели.

Спасибо!


person henriksen    schedule 30.01.2009    source источник
comment
В настоящее время меня тоже вытаскивают из дерьма.   -  person    schedule 08.06.2010


Ответы (3)


Я никогда не находил способа предотвратить это. Вместо этого я просто набираю XAML.

ИЗМЕНИТЬ:

Я написал это почти три года назад. Между тем, похоже, что опыт разработки стал намного лучше.

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

Вот ссылка на статью, в которой показано, как использовать инструменты дизайна в Visual Studio 2010 для создания макета формы без необходимости вводить какой-либо XAML. (Несмотря на название, речь идет о WPF.)

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

Методы макета для Разработчики Windows Form

person Ryan Lundy    schedule 30.01.2009
comment
То же самое. На мой вкус конструктор WPF работает слишком медленно и глючит. - person Andy; 31.01.2009
comment
Я согласен. Дизайнер стал лучше обеспечивать репрезентативное отображение того, что обозначает xaml, но я не знаю, возможно ли для него обеспечить потрясающий опыт перетаскивания, как у дизайнера winforms, учитывая радикально другую базовую модель. - person Greg D; 31.01.2009
comment
Я не вижу причин, по которым это невозможно. Вы можете перетаскивать в ASP.NET в конструктор или разметку. Сделать то же самое в WPF не кажется долгим шагом. Но по какой-то причине Microsoft не сделала это приоритетом. - person Ryan Lundy; 04.07.2010

Когда я перетаскиваю элемент управления в стековую панель, он не добавляет полей, а «перетекает» вместе с остальными.

У элементов управления, которые вы перетаскиваете на поверхность конструктора, есть поля по умолчанию, потому что они знают, где они размещены. Обычно я создаю сетку и устанавливаю ее поля там, где я хочу, а затем создаю столбцы и строки для размещения элементов управления. Я добавляю другие элементы управления, которые добавят поля, которые обычно не то, что мне нужно. После того, как все элементы управления помещены в сетку и размещены в разумных пределах, я переключаюсь на представление XAML и либо полностью удаляю поле (что приводит к тому, что элемент управления, такой как кнопка, заполняет все пространство), либо делаю поле примерно равным 5, что ставит некоторые приятная обивка вокруг элемента управления.

Итог ... и это особенно верно при разработке Silverlight, вы должны привыкнуть напрямую управлять XAML. Это единственный способ получить макет именно там, где вы хотите. Это мое мнение и большинство в моем магазине, кто занимается разработкой WPF / silverlight.

person ScottG    schedule 31.01.2009

К сожалению, средств для этого не существует.

Размер по умолчанию устанавливается в результате того, что вы манипулируете размером вашего элемента управления в конструкторе. Когда вы увеличиваете ширину и / или высоту элемента управления, дизайнер интерпретирует ваши действия как запрос на создание элемента управления с указанной шириной и / или высотой.

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

Лично я предпочитаю использовать только редактор XAML и лишь изредка заглядывать в конструктор WPF, когда хочу увидеть текущий макет. Я также предпочитаю использовать сетку для компоновки большинства моих окон / элементов управления, поскольку она обеспечивает максимальную гибкость не только для изменения размера и позиционирования, но и для других задач / функций, таких как анимация, преобразования и т. Д.

person Richard McGuire    schedule 02.02.2009