Saya punya TextBlock
di WPF. Saya menulis banyak baris untuk itu, jauh melebihi ketinggian vertikal. Saya mengharapkan bilah gulir vertikal muncul secara otomatis ketika itu terjadi, tetapi ternyata tidak. Saya mencoba mencari properti bilah gulir di panel Properti, tetapi tidak dapat menemukannya.
Bagaimana cara membuat bilah gulir vertikal yang dibuat secara otomatis untuk saya TextBlock
setelah isinya melebihi ketinggiannya?
Klarifikasi: Saya lebih suka melakukannya dari desainer dan bukan dengan langsung menulis ke XAML.
TextBlock
dua kali danTextBox
satu kali.Jawaban:
Bungkus dalam penampil gulir:
CATATAN jawaban ini berlaku untuk
TextBlock
(elemen teks hanya baca) seperti yang diminta dalam pertanyaan asli.Jika Anda ingin menampilkan bilah gulir di
TextBox
(elemen teks yang dapat diedit) maka gunakanScrollViewer
properti terlampir:Nilai yang valid untuk dua sifat ini
Disabled
,Auto
,Hidden
danVisible
.sumber
TextBlock
tidakTextBox
.dapat menggunakan yang berikut ini sekarang:
sumber
TextBlock
bukanTextBox
(seperti pada judul dan kalimat pembuka), tetapi paragraf kedua disebutkanTextBox
. Untuk lebih jelasnya, jawaban ini jelas merupakan pendekatan terbaik untuk kotak teks , dan milik saya adalah yang terbaik yang saya ketahui untuk blok teks :)Sesuatu yang lebih baik adalah:
Ini memastikan bahwa teks dalam blokir teks Anda tidak meluap dan tumpang tindih elemen di bawah blokir teks seperti yang mungkin terjadi jika Anda tidak menggunakan kisi. Itu terjadi pada saya ketika saya mencoba solusi lain meskipun blok teks sudah di grid dengan elemen lain. Ingatlah bahwa lebar blokir teks haruslah Otomatis dan Anda harus menentukan yang diinginkan dengan elemen Grid. Saya melakukan ini dalam kode saya dan itu bekerja dengan indah. HTH.
sumber
Ini adalah cara untuk menggunakan TextBox scrolling di XAML dan menggunakannya sebagai area teks.
sumber
TextBlock
tidakTextBox
.Jawaban ini menjelaskan solusi menggunakan MVVM.
Solusi ini sangat bagus jika Anda ingin menambahkan kotak logging ke jendela, yang secara otomatis akan menggulir ke bawah setiap kali pesan logging baru ditambahkan.
Setelah properti terlampir ini ditambahkan, mereka dapat digunakan kembali di mana saja, sehingga membuatnya untuk perangkat lunak yang sangat modular dan dapat digunakan kembali.
Tambahkan XAML ini:
Tambahkan properti terlampir ini:
Dan properti terlampir ini (untuk menghapus kotak):
Kemudian, jika Anda menggunakan kerangka kerja injeksi ketergantungan seperti MEF, Anda dapat menempatkan semua kode khusus logging ke dalam ViewModel itu sendiri:
Begini cara kerjanya:
sumber
Saya melakukan ini dengan cara lain dengan meletakkan MaxHeight di ScrollViewer.
Cukup Sesuaikan MaxHeight untuk menampilkan lebih banyak atau lebih sedikit baris teks. Mudah.
sumber
Kamu bisa memakai
Ini adalah properti terlampir dari wpf. Untuk informasi lebih lanjut
http://wpfbugs.blogspot.in/2014/02/wpf-layout-controls-scrollviewer.html
sumber
Saya mencoba agar saran ini berfungsi untuk blokir teks, tetapi tidak berhasil. Saya bahkan mencoba membuatnya bekerja dari perancang. (Lihat Layout dan perluas daftar dengan mengklik panah bawah "V" di bagian bawah) Saya mencoba mengatur scrollviewer ke Visible dan kemudian Auto , tetapi masih tidak berfungsi.
Saya akhirnya menyerah dan mengubah
TextBlock
keTextBox
dengan set atribut Readonly , dan itu bekerja seperti pesona.sumber
Tidak tahu apakah ada orang lain yang memiliki masalah ini, tetapi membungkus saya
TextBlock
denganScrollViewer
entah bagaimana mengacaukan UI saya - sebagai solusi sederhana saya menemukan bahwa menggantiTextBlock
dengan yangTextBox
seperti inimenciptakan
TextBox
yang terlihat dan berperilaku sepertiTextBlock
dengan bilah gulir (dan Anda dapat melakukan semuanya di perancang).sumber
Ini adalah solusi sederhana untuk pertanyaan itu. Gulir vertikal akan diaktifkan hanya ketika teks meluap.
<TextBox Text="Try typing some text here " ScrollViewer.VerticalScrollBarVisibility="Auto" TextWrapping="WrapWithOverflow" />
sumber