ItemTemplate 和 ItemPanelTemplate 有什么区别?
在 WPF Listbox
中,我对这两个概念感到困惑: ItemTemplate
和 ItemsPanelTemplate
有人能给我解释一下吗?
谢谢 约翰
In WPF Listbox
, I'm confused with these 2 notions:ItemTemplate
and ItemsPanelTemplate
Can someone explain me more?
Thanks
John
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
让我尝试通过示例来解释这一点:
结果:
ItemTemplate
确定列表中每个项目的布局。另一方面,ItemsPanel
是将包含各个项目的面板。鉴于上述定义,可视化树将类似于以下内容:Let me try to explain this by example:
And the result:
The
ItemTemplate
determines the layout of each item in the list. On the other hand theItemsPanel
is the panel that will contain the individual items. Given the above definition the visual tree will be something similar to this:ItemTemplate 用于指定用于呈现列表框中的项目的 DataTemplate。
ItemPanelTemplate 用于指定用于排列 ListBox 子项的面板。
例如,如果您的 ListBox 绑定到 ObservableCollection,则必须指定 DataTemplate 来告诉它如何呈现每个 Person 对象。
这将垂直排列每个项目,因为 ListBox 默认使用 StackPanel。如果您想更改此行为,请使用 ItemPanelTemplate 属性:
您甚至可以将 StackPanel 更改为任何其他面板(例如 WrapPanel)。
ItemTemplate is used to specify a DataTemplate used to render the item in your ListBox.
ItemPanelTemplate is used to specify the panel used to arrange the children of your ListBox.
For example, if your ListBox is bound to an ObservableCollection you must specify a DataTemplate to tell it how to render each Person object.
That will arrange each item vertically because ListBox used a StackPanel by default. If you want to change this behaviour, used the ItemPanelTemplate property:
You can even change the StackPanel to any other panel (WrapPanel for example).