我正在尝试为项目控件中的每个项目设置边框。以下是我的XAML代码。但这不起作用。
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Control.BorderThickness" Value="5" />
<Setter Property="Control.BorderBrush" Value="Black" />
</Style>
</ItemsControl.ItemContainerStyle>
答案 0 :(得分:24)
ItemsControl
中的容器是ContentPresenter
,不是一个控件,此样式不会执行任何操作。您可以创建一个ItemsTemplate
,其中包含Border
。
或者,您可以更改ContentTemplate
中的ItemContainerStyle
:
<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
))
答案 1 :(得分:1)
请参阅BorderThickness
和[BorderBrush][1]
上的评论:
此属性仅影响其模板使用BorderThickness属性作为参数的控件。对于其他控件,此属性不会产生任何影响。
此属性仅影响其模板使用BorderBrush属性作为参数的控件。对于其他控件,此属性不会产生任何影响。
所以你实际上需要这样的控制,例如Border,其中包含您需要显示的内容。