如何为ItemsControl中的项添加边框?

时间:2012-01-29 18:56:41

标签: wpf xaml styles border itemscontrol

我正在尝试为项目控件中的每个项目设置边框。以下是我的XAML代码。但这不起作用。

<ItemsControl.ItemContainerStyle>
    <Style>
        <Setter Property="Control.BorderThickness" Value="5" />
        <Setter Property="Control.BorderBrush" Value="Black" />
    </Style>
</ItemsControl.ItemContainerStyle>

2 个答案:

答案 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,因为它不那么冗长,节省你三个标签(StyleSetterSetter.Value))

答案 1 :(得分:1)

请参阅BorderThickness[BorderBrush][1]上的评论:

  

此属性仅影响其模板使用BorderThickness属性作为参数的控件。对于其他控件,此属性不会产生任何影响。

     

此属性仅影响其模板使用BorderBrush属性作为参数的控件。对于其他控件,此属性不会产生任何影响。

所以你实际上需要这样的控制,例如Border,其中包含您需要显示的内容。