我正试图为items控件中的每个项设置一个边框。以下是我的XAML代码。但这行不通。
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Control.BorderThickness" Value="5" />
<Setter Property="Control.BorderBrush" Value="Black" />
</Style>
</ItemsControl.ItemContainerStyle>
ItemsControl
中的容器是一个ContentPresenter
,它是而不是控件,这种样式不会起任何作用。您可以创建一个包含Border
的ItemsTemplate
。
或者,您可以更改ItemContainerStyle
:中的ContentTemplate
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Border BorderBrush="Black" BorderThickness="5">
<ContentPresenter Content="{Binding}"/>
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</ItemsControl.ItemContainerStyle>
(注意:这是一个真正的替代方案,因为它做的事情完全相同,所以我会使用ItemTemplate
,因为它不那么冗长,为您保存了三个标签(Style
、Setter
、Setter.Value
))
参见关于BorderThickness
和[BorderBrush][1]
:的备注
此属性仅影响其模板使用BorderThickness属性作为参数的控件。对于其他控件,此属性没有影响。
此属性仅影响其模板使用BorderBrush属性作为参数的控件。对于其他控件,此属性没有影响。
所以你实际上需要这样一个控件,例如Border,你可以在其中包装你需要显示的任何内容。