Sepertinya ini mudah tapi saya bingung. Di WPF, saya ingin TextBox yang membentang ke lebar induknya, tetapi hanya untuk lebar maksimum. Masalahnya adalah saya ingin itu dibenarkan di dalam induknya. Untuk membuatnya meregang Anda harus menggunakan HorizontalAlignment = "Stretch", tapi kemudian hasilnya dipusatkan. Saya telah bereksperimen dengan HorizontalContentAlignment, tetapi tampaknya tidak melakukan apa pun.
Bagaimana caranya agar kotak teks biru ini tumbuh dengan ukuran jendela, memiliki lebar maksimum 200 piksel, dan dibiarkan rata?
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBox Background="Azure" Text="Hello" HorizontalAlignment="Stretch" MaxWidth="200" />
</StackPanel>
</Page>
Apa triknya?
HorizontalAlignment="Stretch"
padaContainer
elemen. (ps, saya sadar Anda mengajukan pertanyaan itu lebih dari 6 tahun yang lalu.)sumber
Kedua jawaban yang diberikan berhasil untuk masalah yang saya nyatakan - Terima kasih!
Namun dalam aplikasi saya yang sebenarnya, saya mencoba membatasi panel di dalam ScrollViewer dan metode Kent tidak menanganinya dengan baik karena alasan tertentu saya tidak repot-repot melacaknya. Pada dasarnya kontrolnya bisa berkembang melampaui pengaturan MaxWidth dan mengalahkan niat saya.
Teknik Nir bekerja dengan baik dan tidak memiliki masalah dengan ScrollViewer, meskipun ada satu hal kecil yang harus diperhatikan. Anda ingin memastikan margin kanan dan kiri pada TextBox disetel ke 0 atau mereka akan menghalangi. Saya juga mengubah pengikatan untuk menggunakan ViewportWidth daripada ActualWidth untuk menghindari masalah saat scrollbar vertikal muncul.
sumber
Anda dapat menggunakan ini untuk Lebar DataTemplate Anda:
Pastikan root DataTemplate Anda memiliki Margin = "0" (Anda dapat menggunakan beberapa panel sebagai root dan menyetel Margin ke turunan root tersebut)
sumber
Secara fungsional mirip dengan jawaban yang diterima, tetapi tidak memerlukan elemen induk untuk ditentukan:
sumber
Mungkin saya masih dapat membantu seseorang yang mengalami pertanyaan ini, karena ini adalah masalah yang sangat lama.
Saya membutuhkan ini juga dan menulis sebuah perilaku untuk mengatasinya. Jadi inilah perilakunya:
Kemudian Anda bisa menggunakannya seperti ini:
Dan akhirnya lupa menggunakan
System.Windows.Interactivity
namespace untuk menggunakan perilaku tersebut.sumber
Saya akan menggunakan
SharedSizeGroup
sumber
Dalam kasus saya, saya harus meletakkan kotak teks ke dalam panel tumpukan untuk meregangkan kotak teks di sisi kiri. Terima kasih untuk posting sebelumnya. Sebagai contoh, saya mengatur warna latar belakang untuk melihat apa yang terjadi ketika ukuran jendela berubah.
sumber