wpf listbox 内的内容显示问题,需要设置里面的itemsPresenter

有时候控件并非维护本身逻辑,而是依赖于父子元素的,如了上诉的ContentPresenter,我们还有一个非常常用的ListBox控件,因为继承自ItemsControl,所以有一个ItemsPanel属性作为集合元素承载容器,但集合控件本身却不负责呈现控件,那么这个任务就留给了子元素ItemsPresenter,其实用也很简单,只要把ItemsPresenter放在内部模板中,那么ItemsPresenter则会去检测父元素是否为集合控件,然后将ItemsPanel添加到其内部视觉树当中

<Style x:Key="{x:Type ItemsControl}" TargetType="{x:Type ItemsControl}">

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="{x:Type ItemsControl}">

<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">

<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>

</Border>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

笑语欢歌水云间, 谈古论今郁作烟。 人存一世数十载, 生则壮志冲九天!
原文地址:https://www.cnblogs.com/mercedes-Benz/p/5328827.html