Bagaimana cara menetapkan perataan tengah vertikal ke teks di dalam TextBlock? Saya menemukan properti TextAlignment tetapi untuk perataan teks horizontal. Bagaimana saya melakukannya untuk penyelarasan teks vertikal?
wpf
vertical-alignment
textblock
Semut
sumber
sumber
TextAlignment
hanya memengaruhi perataan horizontal, bukan perataan vertikal (seperti yang dimaksud pertanyaan).Jawaban:
Textblock itu sendiri tidak dapat melakukan perataan vertikal
Cara terbaik untuk melakukan ini yang saya temukan adalah dengan meletakkan blok teks di dalam perbatasan, sehingga perbatasan melakukan penyelarasan untuk Anda.
Catatan: Ini secara fungsional setara dengan menggunakan kisi, hanya tergantung bagaimana Anda ingin kontrol cocok dengan sisa tata letak Anda yang mana yang lebih cocok
sumber
Sementara Orion Edwards Answer berfungsi untuk situasi apa pun, mungkin menyusahkan untuk menambahkan perbatasan dan mengatur properti perbatasan setiap kali Anda ingin melakukan ini. Cara cepat lainnya adalah dengan mengatur padding dari blok teks:
sumber
TextBlock tidak mendukung perataan teks vertikal.
Saya mengatasi ini dengan membungkus blok teks dengan Grid dan pengaturan HorizontalAlignment = "Peregangan" dan VerticalAlignment = "Tengah".
Seperti ini:
sumber
TextBlock
padaEllipse
di dalamGrid
. Tidak perlu mengikat properti lebar dan tinggi saya atau melakukan sesuatu yang rumit.Anda dapat menggunakan label alih-alih blokir teks.
sumber
Jika Anda bisa melakukannya tanpa pembungkus teks , saya pikir mengganti TextBlock dengan Label adalah cara yang paling ringkas untuk melakukan ini. Kalau tidak, ikuti salah satu jawaban valid lainnya.
sumber
TextBlock
tidak mendukung perataan vertikal kontennya. Jika Anda harus menggunakanTextBlock
maka Anda harus menyelaraskannya dengan induknya.Namun jika Anda dapat menggunakannya
Label
(dan mereka memiliki fungsi yang sangat mirip) maka Anda dapat memposisikan konten teks:The
Label
akan meregang untuk mengisi batas yang secara default, yang berarti teks label akan dipusatkan.sumber
Bagi saya,
VerticalAlignment="Center"
perbaiki masalah ini.Ini bisa jadi karena
TextBlock
dibungkus dengan kisi-kisi, tetapi kemudian praktis semua dalam wpf.sumber
Saya telah menemukan bahwa memodifikasi gaya kotak teks (yaitu:)
controltemplate
dan kemudian memodifikasiPART_ContentHost
perataan vertikal ke Tengah akan melakukan triksumber
Hanya untuk cekikikan, berikan XAML ini pusaran. Itu tidak sempurna karena itu bukan 'perataan' tetapi memungkinkan Anda untuk menyesuaikan perataan teks dalam paragraf.
sumber
Jika Anda dapat mengabaikan ketinggian TextBlock, lebih baik bagi Anda untuk menggunakan ini:
sumber
Dalam kasus saya, saya melakukan ini untuk membuat
TextBlock
tampilan lebih bagus.Trik untuk membuat teks lebih jauh dari bawah adalah dengan mengatur
sumber
Anda dapat melihat posting blog saya. Anda dapat mengatur tinggi teksblock khusus dari codebehind. Untuk mengatur ketinggian khusus, Anda perlu mengaturnya di dalam di dalam batas atau stackpanel
http://ciintelligence.blogspot.com/2011/02/wpf-textblock-vertical-alignment-with.html
sumber
Saya menemukan saya harus melakukannya sedikit berbeda. Masalah saya adalah bahwa jika saya mengubah ukuran font, teks akan naik di TextBox alih-alih tetap di bawah dengan sisa TextBox di telepon. Dengan mengubah perataan vertikal dari atas ke bawah, saya dapat mengubah font secara terprogram dari ukuran 20 ke ukuran 14 & kembali, menjaga gravitasi teks di bagian bawah dan menjaga semuanya tetap rapi. Begini caranya:
sumber
Untuk memperluas jawaban yang diberikan oleh @Orion Edwards, inilah yang akan Anda lakukan sepenuhnya dari kode-belakang (tidak ada gaya yang ditetapkan). Pada dasarnya membuat kelas khusus yang mewarisi dari Border yang memiliki Anak diatur ke TextBox. Contoh di bawah ini mengasumsikan bahwa Anda hanya ingin satu baris dan bahwa perbatasan adalah anak kanvas. Juga mengasumsikan Anda perlu menyesuaikan properti MaxLength dari TextBox berdasarkan lebar Border. Contoh di bawah ini juga menetapkan kursor Border untuk meniru Textbox dengan mengaturnya ke tipe 'IBeam'. Margin '3' diatur sehingga TextBox tidak sepenuhnya selaras ke kiri perbatasan.
Kelas:
sumber
Saya pikir lebih baik menggunakan Label (atau TextBlock) ke dalam Label, Anda tidak bisa melampirkan acara mouse langsung di kontrol perbatasan, akhirnya terpasang di TextBlock, ini rekomendasi saya:
sumber
Saya pikir itu bijaksana untuk menggunakan kotak teks tanpa batas dan latar belakang sebagai cara mudah dan cepat untuk mencapai blok teks rata tengah
sumber
sumber
TextBlock
, bukanTextBox
. -1