WPF'de azami aşağı açılır yükseklikten ziyade maksimum açılan öğe sayısını ayarlamak zaten var mı? Teşekkürler! -KevinWPF ComboBox MaxDropDownItems
cevap
X öğe sayısını göstermenin doğrudan bir yolu yoktur. Boyutu sınırlamak için MaxDropDownHeight
özelliğini kullanmanız gerekir. Bu özellik kontrol tarafından hesaplanmadığından ve tam olarak özelleştirilebildiğinden, bir öğenin yüksekliğini hesaplamak için bir şey yazabilir ve sonra görüntülemek istediğiniz maksimum öğelerle o kadar çok olabilir ve ardından MaxDropDownHeight
değerini temel alarak ayarlayabilirsiniz.
+1 Tüm öğeler aynı yükseklikte olduğu sürece doğru fikir. Bu muhtemelen ekli bir mülkte yapılmalıdır. Bunu yapmak için gerçek koda sahip bir cevap ekleyeceğim. –
Bu soru ancak tüm öğelerinizin aynı yüksekliğe sahip olması durumunda anlamlı olabilir. Aksi takdirde, ComboBox'ınızı öğe listesinin farklı bölümlerini görmek için yukarı ve aşağı kaydırırken, ComboBox'unuzun kaydırdıkça daha büyük ve daha küçük olacağını görürsünüz. aynı yükseklikte olan sizin tüm öğeleri, bu iliştirilmiş bir özellik kullanarak bunu yapmak için çok kolaysa
: Bu özellik sayesinde
public class ComboBoxHelper : DependencyObject
{
public static int GetMaxDropDownItems(DependencyObject obj) { return (int)obj.GetValue(MaxDropDownItemsProperty); }
public static void SetMaxDropDownItems(DependencyObject obj, int value) { obj.SetValue(MaxDropDownItemsProperty, value); }
public static readonly DependencyProperty MaxDropDownItemsProperty = DependencyProperty.RegisterAttached("MaxDropDownItems", typeof(int), typeof(ComboBoxHelper), new PropertyMetadata
{
PropertyChangedCallback = (obj, e) =>
{
var box = (ComboBox)obj;
box.DropDownOpened += UpdateHeight;
if(box.IsDropDownOpen) UpdateHeight(box, null);
}
});
private static void UpdateHeight(object sender, EventArgs e)
{
var box = (ComboBox)sender;
box.Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(() =>
{
var container = box.ItemContainerGenerator.ContainerFromIndex(0) as UIElement;
if(container!=null && container.RenderSize.Height>0)
box.MaxDropDownHeight = container.RenderSize.Height * GetMaxDropDownItems(box);
}));
}
}
yazabilirsiniz:
<ComboBox ...
my:ComboBoxHelper.MaxDropDownItems="8" />
Bu kodu doğrudan test ettim. XAML bir hata ya da bir şey üretmiyor ama uygulamayı çalıştırdığımda açılan kutu listesi yüksekliği yaklaşık 5 öğede kalıyor ve 15 değerini denedi. – steviesama
Açılan kutucuklar ilk açıldığında görünür olan boyutlar arasında bir atlama var. DispatcherPriotiry'yi Normal olarak ayarlayın. Ve şimdi tam olarak ihtiyacım olduğu gibi çalışıyor. Teşekkür ederim :) – adminSoftDK
- 1. WPF ComboBox Bağlama Değişkeni
- 2. WPF Bağlama ComboBox ViewModel'e
- 3. Stil WPF ComboBox öğeleri
- 4. C# WPF comboBox garip sayı
- 5. Wpf combobox seçili değeri alın
- 6. xpl'de nasıl wpf combobox doldurulur
- 7. WPF ComboBox sıfırlar madde kaynaklı
- 8. Databound WPF ComboBox 'Yeni ...' ile
- 9. WPF: Açma düğmesi olmayan ComboBox
- 10. WPF - Combobox SelectedItem ayarlanmıyor mu?
- 11. WPF 2 ComboBox bağlama sorunu
- 12. WPF Düzenlenebilir Combobox IsFocused problem
- 13. C# Garip WPF Combobox Davranışı
- 14. WPF ciltleme ComboBox enum'a (bir twist ile)
- 15. WPF ComboBox Öğesi Bir dize koleksiyonuna etiketleme
- 16. ComboBox SelectedValue veya SelectedItem Binding WPF C#
- 17. WPF ComboBox ... .text özelliği nasıl ayarlanır?
- 18. DropDownHeight of ComboBox
- 19. İkinci ComboBox
- 20. combobox
- 21. Combobox,
- 22. WPF
- 23. WPF Combobox: Uzunluğa sahip metin girilmeye çalışıldığında sınırların dışında imleç> combobox width
- 24. WPF
- 25. Bir WPF ComboBox, seçimi boş olduğunda alternatif metni görüntüleyebilir mi?
- 26. Onay kutuları ile bir WPF ComboBox mi arıyorsunuz?
- 27. WPF ComboBox - büyük/küçük harf duyarlı veri bağlama
- 28. WPF ve Varlık Çerçevesi'ni kullanarak arama combobox için bağlama ayarlama
- 29. Açılan kutu taşınırken WPF combobox açılır penceresinin kopmasını nasıl önleyebilirim?
- 30. WPF DataGrid için hücre düzeyi ComboBox nasıl alınır?
Neden don' Yüklediğiniz miktarı sadece "ComboBox" ile sınırlandırıyor musunuz? Sadece maks. Kontrolün maksimumu aşarken ne yapmasını beklerdiniz? Bir istisna atmak mı? Sadece eklemez misin? – Kelsey
Hayır ... Sabit kodlamadan ziyade maksimum açılır yükseklik. Görüntülenecek maksimum açılır menü miktarını ayarlamayı tercih ederim. Üzgünüm, garip bir şekilde, VB'nin bir kerede sergilenen azami açılır menüye sahip birleşik kutularını düşünüyordum. – Kevin