Saya bertanya-tanya apakah saya dapat memiliki 2 kontrol di StackPanel yang berorientasi horisontal sehingga item yang tepat harus merapat ke sisi kanan StackPanel.
Saya mencoba yang berikut tetapi tidak berhasil:
<StackPanel Orientation="Horizontal">
<TextBlock>Left</TextBlock>
<Button Width="30" HorizontalAlignment="Right">Right<Button>
</StackPanel>
Dalam cuplikan di atas, saya ingin Tombol merapat ke sisi kanan StackPanel.
Catatan: Saya perlu melakukannya dengan StackPanel, bukan Grid, dll.
wpf
layout
wpf-controls
stackpanel
alignment
Shimmy Weitzhandler
sumber
sumber
Jawaban:
Anda dapat mencapai ini dengan
DockPanel
:Perbedaannya adalah bahwa a
StackPanel
akan mengatur elemen anak menjadi satu garis (baik vertikal atau horizontal) sedangkan aDockPanel
menentukan area di mana Anda dapat mengatur elemen anak baik secara horizontal atau vertikal, relatif satu sama lain (Dock
properti mengubah posisi elemen relatif terhadap yang lain) elemen dalam wadah yang sama. Properti perataan, sepertiHorizontalAlignment
, mengubah posisi elemen relatif terhadap elemen induknya).Memperbarui
Seperti yang ditunjukkan dalam komentar Anda juga dapat menggunakan
FlowDirection
properti aStackPanel
. Lihat jawaban @ D_Bester .sumber
LastChildFill="False"
itu<DockPanel LastChildFill="False">
, lihat stackoverflow.com/a/9599290/4573839Yo dapat mengatur
FlowDirection
dariStack panel
keRightToLeft
, dan kemudian semua item akan disesuaikan ke sisi kanan.sumber
Bagi mereka yang tersandung pada pertanyaan ini, berikut adalah cara untuk mencapai tata letak ini dengan sebuah
Grid
:menciptakan
sumber
Tidak bisa menjalankan ini menggunakan DockPanel seperti yang saya inginkan dan membalikkan arah aliran StackPanel menyusahkan. Menggunakan kisi bukan merupakan pilihan karena item di dalamnya dapat disembunyikan saat runtime dan karenanya saya tidak tahu jumlah kolom pada waktu desain. Solusi terbaik dan paling sederhana yang bisa saya buat adalah:
Ini akan menghasilkan kontrol di dalam StackPanel yang disejajarkan ke sisi kanan ruang yang tersedia terlepas dari jumlah kontrol - baik pada desain dan runtime. Yay! :)
sumber
Ini bekerja dengan baik untuk saya. Cukup taruh tombol terlebih dahulu sejak Anda mulai di sebelah kanan. Jika FlowDirection menjadi masalah, tambahkan saja StackPanel di sekitarnya dan tentukan FlowDirection = "LeftToRight" untuk bagian itu. Atau cukup tentukan FlowDirection = "LeftToRight" untuk kontrol yang relevan.
sumber
sumber
untuk windows 10 gunakan relativePanel, bukan stack panel, dan gunakan
untuk elemen yang terkandung.
sumber
Jika Anda mengalami masalah seperti yang saya alami di mana label dipusatkan di panel tumpukan vertikal saya, pastikan Anda menggunakan kontrol lebar penuh. Hapus properti Width, atau letakkan tombol Anda di wadah lebar penuh yang memungkinkan penyelarasan internal. WPF adalah tentang menggunakan wadah untuk mengontrol tata letak.
StackPanel Vertikal dengan Label Kiri diikuti oleh Tombol Kanan
Saya harap ini membantu.
sumber
Mungkin bukan yang Anda inginkan jika Anda perlu menghindari nilai ukuran hard-coding, tapi kadang-kadang saya menggunakan "shim" (Pemisah) untuk ini:
sumber