Заказ недвижимости в Margin

219

Если у меня есть такая строка в XAML:

Storyboard.TargetProperty="Margin" From="1,2,3,4" To="0,0,0,0"

Что такое вверху внизу справа и слева? 1 - справа 2 - сверху 3 - слева 4 - снизу

Это правильно?

Папа джон
источник
1
Второй результат при поиске порядка маржи WPF, stackoverflow.com/questions/520422/… . левый верхний правый нижний
Lukazoid
@PapaJohn Чтобы быть более точным в отношении @amit jhaпредоставленной ссылки , посмотрите на раздел, озаглавленный XAML Valuesдля поля в этой ссылке.
Nam

Ответы:

404
Margin="1,2,3,4"
  1. Осталось,
  2. Верхний,
  3. Правильно,
  4. Низ

Также возможно указать только два размера:

Margin="1,2"
  1. Лево и право
  2. Верх и низ

Наконец, вы можете указать один размер:

Margin="1"
  1. используется для всех сторон

Порядок такой же, как в WinForms.

Эрно
источник
5
LTRB - это краткая запись, которую легко запомнить.
Сай
44
Примечание: это другой порядок, чем порядок CSS в HTML, то есть Top, Right, Bottom, Left.
Раскин
7
У любого есть понимание, почему они решили пойти с чем-то отличным от CSS?
Чарльз Клейтон
5
@crclayton - Как я уже писал; порядок такой же, как в WinForms. WinForms является естественным предшественником WPF, поэтому программное обеспечение (разработчики) должно было перейти с WinForms на WPF.
Эрно
30
Как насчет. WPF начинается на Западе. Netscape начинается на севере? И, очевидно, по часовой стрелке для обоих.
Мартин Каподичи
34

Есть три уникальные ситуации:

  • 4 числа , например Margin="a,b,c,d".
  • 2 числа , например Margin="a,b".
  • 1 номер , например Margin="a".

4 номера

Если есть 4 числа , то ее left, top, right, bottom( по часовой стрелке круг , начиная с середины левого края). Первый номер всегда "Запад", как "WPF":

<object Margin="left,top,right,bottom"/>

Пример: если мы используем Margin="10,20,30,40"это генерирует:

введите описание изображения здесь

2 номера

Если есть 2 числа , то первое - толщина левого и правого полей, второе - толщина верхнего и нижнего полей. Первый номер всегда "Запад", как "WPF":

<object Margin="a,b"/> // Equivalent to Margin="a,b,a,b".

Пример: если мы используем Margin="10,30", левый и правый поля равны 10, а верхний и нижний оба равны 30.

введите описание изображения здесь

1 номер

Если есть 1 число , то число повторяется (по сути, это толщина границы).

<object Margin="a"/> // Equivalent to Margin="a,a,a,a".

Пример: если мы используем Margin="20"это генерирует:

введите описание изображения здесь

Обновление 2020-05-27

В течение последних 5 лет работали над крупномасштабным приложением WPF с более чем 100 экранами. Часть команды из 5 разработчиков WPF / C # / Java. В конечном итоге мы остановились на 1 номере (для толщины границы) или 4 числах. Мы никогда не используем 2. Это согласованно и, кажется, является хорошим способом снижения когнитивной нагрузки при развитии.


Правило:

Все числа ширины начинаются слева («запад», как «WPF») и идут по часовой стрелке (если два числа, только дважды по часовой стрелке, затем отразите остальные).

Контанго
источник
1
«Если есть 2 числа, то первое - это толщина левого и правого полей». Но в примере первое число - 30, и оно заканчивается как верхнее и нижнее поле.
Питер Брюинз
21

Просто потому, что комментарии @MartinCapodici потрясающие, я пишу здесь, чтобы дать наглядность.

Все по часовой стрелке:

  • W PF start W est (влево-> верхний-> правый-> нижний)
  • N etscape (то есть CSS) начало N orth (верхний -> правый -> нижний -> левый)
Askolein
источник
7
<object Margin="left,top,right,bottom"/>
- or - 
<object Margin="left,top"/>
- or - 
<object Margin="thicknessReference"/>

Смотрите здесь: http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.margin.aspx

chopikadze
источник
3
Для второго примера, «left, top», это фактически повторяется: первое число относится к left & right, второе к top & bottom, см. Мой ответ ниже.
Контанго