Как добавить границу к элементу в ItemsControl? - PullRequest
7 голосов
/ 29 января 2012

Я пытаюсь установить границу для каждого элемента из элемента управления. Ниже приведен мой код XAML. Но это не работает.

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

Ответы [ 2 ]

24 голосов
/ 29 января 2012

Контейнер в 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 голос
/ 29 января 2012

См. Примечания к BorderThickness и [BorderBrush][1]:

Это свойство влияет только на элемент управления, шаблон которого использует свойство BorderThickness в качестве параметра. На других элементах управления,это свойство не влияет.

Это свойство влияет только на элемент управления, шаблон которого использует свойство BorderBrush в качестве параметра. На других элементах управления это свойство не влияет.

Таким образом, вы на самом деленужен такой элемент управления, например Граница , в который вы оборачиваете все, что нужно для отображения.

...