Panel.IstItemsHost ekli özelliği için iyi bir belge bulamıyorum. ItemsControl için ItemsContainer şablonunda ayarlayan birçok insan örneğini görüyorum, ancak MSDN'deki un-document belgelerinin özelliği, özellik belirleme nedenini veya avantajlarını açıklamıyor. Bu özelliği SAHİP OLMAYAN, ancak henüz herhangi bir yan etki görmediği için çok fazla konteyner ürettim.Panel.IsItemsHost tam olarak ne yapar?
cevap
ItemsControl'üm var mı? Kaydırarak öğeleri içeri ve dışarı sokan özel bir panel kullanmak istiyorum; onun bir SwoopPanel denir. Şimdi, ItemsControl'ün, oluşturduğu şablonları içermek için SwoopPanel'i kullanmasını nasıl anlarım?
hızlı bir yolu ItemsControl üzerinde ItemsPanel ayarlamaktır: sizin için çalışmıyor bazen Ancak
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<lol:SwoopPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
. Belki de SwoopPanel'in UI'de nasıl sunulduğunu özelleştirmek istersiniz ve bunun üstesinden gelmenin tek yolu ItemsControl'ün kontrol şablonunu değiştirmektir. Şimdi SwoopPanel'inizi doğrudan kontrol şablonuna ekleyebilir ve özelliği kullanarak ItemsControl'ün oluşturduğu tüm şablonlanmış öğeleri yerleştireceği ItemsHost olarak işaretleyebilirsiniz.
<Style TargetType="ItemsControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ItemsControl">
<Border CornerRadius="5">
<ScrollViewer VerticalScrollBarVisibility="Hidden">
<lol:SwoopPanel IsItemsHost="True"/>
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Bunu bir şekilde veya başka yapmak zorunda mısın? Hayır. Bir diğerinden daha avantajlı mı? Eh, ikinci yol UI daha fazla kontrol sağlar, ilk yol daha kolay. Seçimini al, gerçekten. Bunu hiç bir şekilde ikinci şekilde yapmadım, ama sanırım yararlı olabileceği birkaç yer olabilir.
Esasen http://msdn.microsoft.com/en-us/library/system.windows.controls.panel.isitemshost(v=vs.90).aspx
Bkz, ya bu Mesaja diyor olduğunu bir ListBox ControlTemplate değiştirilmesi ve yeni bir düzen, bırakılması istemiyle eğer IsItemsHost = true bazı panelde, örneğin StackPanel. Sonra, ListBox'taki herhangi bir öğe otomatik olarak StackPanel'in çocukları olarak eklenecektir. ListBox yönünü yatay ise, liste kutusu yatay olacaktır.
Diğer yol, ListBox'un ItemsPanel özelliğini bir ItemsTemplate öğesine ayarlamak ve bu şablonda bir StackPanel'iniz var. Bu durumda, ListBox öğeleri ilk durumda olduğu gibi StackPanel çocuklarına eklenecektir. Ancak, IsItemsHost = true değerini ayarlamanıza gerek yoktur, kesinlikle bir etkisi olmaz. Bu, ItemsPanel özelliğini ayarladığınız gerçeği ile sizin için yapılır.
bu açıklama +1'dir. – mkb
- 1. Tam olarak tam olarak ne yapar? (...).
- 2. Tam olarak document.normalize ne yapar?
- 3. Numpy.exp() tam olarak ne yapar?
- 4. AlarmManager.ELAPSED_REALTIME_WAKEUP tam olarak ne yapar
- 5. Standart tokenfilter, Elasticsearch'te tam olarak ne yapar?
- 6. Attach(), Entity Framework'de tam olarak ne yapar?
- 7. Tam olarak ne zaman runtime.Gosched yapar?
- 8. gfortran: mcmodel = medium tam olarak ne yapar?
- 9. OffsetLeftAndRight() öğesi tam olarak ne yapar?
- 10. `Chef :: Config [: file_cache_path]` tam olarak ne yapar?
- 11. C, c_'nin alt çizgi ifadesini tam olarak ne yapar?
- 12. Tablo adı etrafında tırnak işaretleri tam olarak ne yapar?
- 13. WPF Veri Bağlama'nın "RelativeSource FindAncestor" ile tam olarak ne yapar?
- 14. setUseWideViewPort() ve setLoadWithOverviewMode() öğesi tam olarak ne yapar?
- 15. AdornedElementPlaceholder, doğrulama denetimiTemplate'de kullandığımızda tam olarak ne yapar?
- 16. T-SQL "LineNo" ayrılmış kelime tam olarak ne yapar?
- 17. Tam olarak ne kullanıyorum?
- 18. Mod_auth_passthrough ne yapar?
- 19. ^Ne yapar?
- 20. Cygwin'de rebaseall ne yapar?
- 21. rb-fsevent ne yapar?
- 22. Komut dosyası: powershell'de ne yapar?
- 23. Ne Request.Params ["anahtar"] ne yapar?
- 24. Aşağıdaki kod ne yapar?
- 25. PostInvalidate() ne yapar?
- 26. System.Reflection.Missing.Value ne yapar?
- 27. C++ - [=] ne yapar?
- 28. Aşağıdaki kod ne yapar?
- 29. Tam olarak ne gerekli ve ne zaman gerekli?
- 30. @Transactional ne yapar?
Temel olarak, ItemsControl kodu, hiyerarşisinde IsItemsHost olarak ayarlanan denetimi not edecektir ve ItemsPanelTemplate ayarlanmamışsa, bu çocuğu oluşturulan çocuklar için kapsayıcı olarak kullanın. (Eğer bir şablon ve bir isItemsHost çocuğunuz varsa atmak mümkün sanırım). – Armentage
IsItemsHost ekli bir özellik değildir. –
@kai thanks. İyi bir aday gibi görünüyor; Panel'in ItemsControl'ün nasıl uygulandığını bilmesi biraz garip geliyor. – Will