Как переместить все выделенные элементы на n строк в выражении blend? - PullRequest
0 голосов
/ 24 марта 2011

Проектирование форм в серебряном свете - это БОЛЬ.Сетка позволяет легко выровнять материал вправо или влево, но когда вы начинаете создавать более сложные формы, она быстро превращается в ад.

(Думайте о многоколоночных формах, разделяя части формы в пользовательском контроле, сЛокализованные метки, так что вам нужно, чтобы для колонки меток было установлено значение Авто ...)

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

Есть ли способ выделить все элементы управления на нескольких строках и переместить их все на 1 строку вниз?

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

Как эффективно создавать сложные формы?Я знаю об элементе управления DataForm из инструментария, но он находится в качестве «предварительного просмотра», и из того, что я прочитал, он слишком негибкий, когда вам нужно настраивать и создавать формы из нескольких столбцов.

1 Ответ

2 голосов
/ 25 марта 2011

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

Если вы используете Expression Blend и вставляете строку или столбец, используя синие полосы в артборде, Blend попытается сделать это за вас.Он работает с разной степенью успеха, в основном в зависимости от количества элементов управления, которые перекрывают строки привязки новой строки или столбца.Для получения наилучших результатов увеличьте масштаб артборда и добавьте новую линию привязки очень близко к строке выше или столбцу слева.

На этом этапе вам еще предстоит много работы по очистке, но свойства Grid.Row и Grid.Column будут корректно настроены.Корректировка размеров строк и столбцов - один из немногих случаев, когда я выбираю ручное редактирование XAML, поэтому вы, вероятно, быстрее исправите эти значения вручную.

Если создаются нечетные поля (как это часто бывает), выМожно сразу выбрать все затронутые свойства и сбросить поля в массовом порядке.

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

    <UserControl.Resources>
    <GridLength x:Key="StandardColumnHeight">32</GridLength>
</UserControl.Resources>

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

<ColumnDefinition Width="{StaticResource StandardColumnHeight}"/>

Если вы определяете каждую из последующих Grid, используя один и тот же набор ColumnDefinitions (еще один быстрый XAML-copy-n-paste)job).

Первоначальная настройка может потребовать дополнительных усилий, но вставка новой строки в DockPanel является простым вопросом порядка XAML и не требует такой большой работы.

...