2010-12-16 17 views
5

WPF combobox'ın textbox alanına metin girilebildiği düzenlenebilir bir combobox ile çalışıyorum. Girilen metnin uzunluğu, combobox genişliğinden daha büyük olduğunda, imleç hala açılan kutunun dışında ve formda gösterilir, ancak metin gösterilmez. İmlecin açılan kutudan çıkmamasını kısıtlamak için zaten var mı?WPF Combobox: Uzunluğa sahip metin girilmeye çalışıldığında sınırların dışında imleç> combobox width

Teşekkürler.

cevap

0

İçerik sunumu (PART_EditableTextBox) için kullanılan ve daha sonra gerekli stil yeniden ediliyor default style geçersiz kılmak ve TextBox üzerinde MaxLength özelliğini ayarlayabilirsiniz.

Kod içinde yapmayı tercih ederseniz, aynı davranışı gerçekleştirecek ancak sizi bir stil oluşturmaya zorlamayacak olan bu SO answer ürününü inceleyebilirsiniz.

DÜZENLEME:

bunu yapabileceğinden measure the text gerekecek daha dinamik olmasını istiyorsanız. TextChanged olayını işleyebilir ve ölçümü gerçekleştirebilirsiniz.

+0

Merhaba Aaron, Cevabınız için teşekkürler. Combobox'ın textarea'sına girilecek karakter sayısı olan MaxLength'u ayarlıyorum. Ancak, burada problem her karakterin farklı miktarda yer kaplamasıdır. MaxLength'un xaml içinde 30'a ayarlandığını söyleyelim, Küçük harfle yazdığımda belki iyi ve combobox içinde ama büyük harfle yazıyorsam hala combobox'ı aşıyor. Ayrıca karakterlerin farklı kombinasyonu farklı alan kaplar. – user296623

+0

Bu benim fikrim: İmleç metin kutusunun kenarına combobox kontrolünde (Metin sarmada olduğu gibi) ulaşabiliyorsa, bu değeri xaml'de hardcoding yerine MaxLength olarak ayarlayabilirim. Ama şimdi olduğu gibi, bunu nasıl yapacağınızdan emin değilim. – user296623

+0

@ user296623 Elbette bu yaklaşımla ilgili uyarılar var. ComboBox'ınızın olabildiğince geniş olmasına izin verirseniz, bu durum bir sorun olmayacaktır. Yerelleştirmeyle uğraşmak zorunda olup olmadığına ya da başka bir ilginç alan olduğunu kanıtlayacağınızdan emin değilsiniz. Ayrıca, ComboBox'ın düzenlenebilir kısmını büyüyebilirsiniz ... böylece, ComboBox'un yazım gerçekleştikçe büyümesine izin verecek genişlik sabitlenmez. Her ne kadar her şey olsa da, ... ... emlak ekranına kayıyor. –

0

şuna bir çözüm bulup bulmadığını bilmiyorum ama aynı sorun var ve şimdi gördüğünüz gibi, bu kod parçası geliyor: iç

<ControlTemplate x:Key="ComboBoxTextBox" TargetType="{x:Type TextBox}"> 
    <Border x:Name="PART_ContentHost" Focusable="False" Background="{TemplateBinding Background}" /> 
</ControlTemplate> 

... ve şablon için Setter içinde ComboBox stil: Bu şablonu Çıkarma

... 
<TextBox x:Name="PART_EditableTextBox" Style="{x:Null}" Template="{StaticResource ComboBoxTextBox}" 
... 

sorunu çözmek ve bazı diğer küçük sorunlar yaratabilir gibi görünüyor.

0

Kenarlık yerine PART_ContentHost için ScrollViewer'ı kullanın. Örneğin:

<ControlTemplate x:Key="ComboBoxTextBox" TargetType="{x:Type TextBox}"> 
    <ScrollViewer x:Name="PART_ContentHost" Focusable="False" Background="{TemplateBinding Background}" /> 
</ControlTemplate> 
... 
<TextBox x:Name="PART_EditableTextBox" Style="{x:Null}" Template="{StaticResource ComboBoxTextBox}" 
...