Pesanan properti di Margin

218

Jika saya memiliki string seperti itu di XAML:

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

Apa itu Kanan Bawah Atas dan Kiri? 1- kanan 2- atas 3- kiri 4 - bawah

Apakah itu benar?

Papa John
sumber
1
Hasil kedua saat mencari urutan margin WPF, stackoverflow.com/questions/520422/… . kiri bawah kanan atas
Lukazoid
@ PapaJohn Untuk lebih spesifik ke tautan yang @amit jhadisediakan, lihat bagian berjudul XAML Valuesuntuk margin di tautan itu.
nam

Jawaban:

403
Margin="1,2,3,4"
  1. Kiri,
  2. Puncak,
  3. Baik,
  4. Bawah

Dimungkinkan juga untuk menentukan hanya dua ukuran seperti ini:

Margin="1,2"
  1. Kiri dan kanan
  2. Atas dan bawah

Akhirnya Anda dapat menentukan satu ukuran:

Margin="1"
  1. digunakan untuk semua sisi

Urutannya sama dengan di WinForms.

Erno
sumber
5
LTRB adalah notasi singkat untuk diingat dengan mudah.
Sai
44
Catatan: ini adalah urutan yang berbeda dari urutan css html, yaitu Atas, Kanan, Bawah, Kiri.
Ruskin
7
Adakah yang tahu mengapa mereka memutuskan untuk menggunakan sesuatu yang berbeda dari CSS?
Charles Clayton
5
@crclayton - Seperti yang saya tulis; urutannya sama seperti di WinForms. WinForms adalah pendahulu alami untuk WPF sehingga perangkat lunak (pengembang) akan meningkatkan dari WinForms ke WPF.
Erno
30
Bagaimana tentang. WPF dimulai di Barat. Netscape dimulai di Utara? Dan jelas searah jarum jam untuk keduanya.
Martin Capodici
33

Ada tiga situasi unik:

  • 4 angka , mis Margin="a,b,c,d".
  • 2 angka , mis Margin="a,b".
  • 1 angka , mis Margin="a".

4 Angka

Jika ada 4 angka , maka left, top, right, bottom(lingkaran searah jarum jam dimulai dari margin kiri tengah). Nomor pertama selalu "Barat" seperti "WPF":

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

Contoh: jika kita menggunakannya Margin="10,20,30,40"menghasilkan:

masukkan deskripsi gambar di sini

2 Angka

Jika ada 2 angka , maka yang pertama adalah ketebalan margin kiri & kanan, yang kedua adalah ketebalan margin atas & bawah. Nomor pertama selalu "Barat" seperti "WPF":

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

Contoh: jika kita gunakan Margin="10,30", margin kiri & kanan sama-sama 10, dan bagian atas & bawah sama-sama 30.

masukkan deskripsi gambar di sini

1 angka

Jika ada 1 angka , maka angka itu diulangi (intinya adalah ketebalan perbatasan).

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

Contoh: jika kita menggunakannya Margin="20"menghasilkan:

masukkan deskripsi gambar di sini

Perbarui 2020-05-27

Telah bekerja pada aplikasi WPF skala besar selama 5 tahun terakhir dengan lebih dari 100 layar. Bagian dari tim 5 WPF / C # / Java devs. Kami akhirnya memutuskan untuk menggunakan 1 angka (untuk ketebalan perbatasan) atau 4 angka. Kami tidak pernah menggunakan 2. Ini konsisten, dan tampaknya menjadi cara yang baik untuk mengurangi beban kognitif saat berkembang.


Peraturan:

Semua angka lebar dimulai di sebelah kiri ("Barat" seperti "WPF") dan bergerak searah jarum jam (jika dua angka, hanya searah jarum jam dua kali, lalu mirror sisanya).

Contango
sumber
1
"Jika ada 2 angka, maka yang pertama adalah ketebalan margin kiri & kanan" Tetapi dalam contoh angka pertama adalah 30, dan akhirnya menjadi margin atas & bawah.
Peter Bruins
21

Hanya karena komentar @MartinCapodici luar biasa, saya menulis di sini sebagai jawaban untuk memberikan visibilitas.

Semua searah jarum jam:

  • W PF mulai W est (kiri-> atas-> kanan-> bawah)
  • N etscape (yaitu CSS) mulai N orth (atas-> kanan-> bawah-> kiri)
Askolein
sumber
7
<object Margin="left,top,right,bottom"/>
- or - 
<object Margin="left,top"/>
- or - 
<object Margin="thicknessReference"/>

Lihat di sini: http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.margin.aspx

chopikadze
sumber
3
Untuk contoh kedua, "kiri, atas", ini sebenarnya berulang: angka pertama merujuk ke kiri & kanan, yang kedua ke atas & bawah, lihat jawaban saya di bawah ini.
Contango