Обычно вы можете подумать о том, чтобы сделать это путем создания шаблона элемента.Проблема в том, что "generic" ItemsControl
использует ContentPresenter
в качестве контейнера для элемента.Поэтому, даже если вы попытаетесь установить стиль с помощью ItemContainerStyle
, вы обнаружите, что не можете предоставить шаблон, потому что ContentPresenter
не поддерживает шаблонизацию элемента управления (он поддерживает шаблонизацию данных, но здесь не используется).
Дляиспользуйте временный контейнер, который вам придется извлечь из ItemsControl
, как в этом примере .
Альтернативой может быть просто использование элемента управления ListBox
.Затем вы можете просто предоставить собственный шаблон, установив шаблон ListBoxItem
с помощью стиля.
Подробнее о контейнерах можно прочитать здесь .
(С вашим разрешением ядобавляю решение к вашему ответу, Гуге)
<ListBox ItemsSource="{Binding MyObjects}" Grid.Column="1">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border BorderBrush="Black" BorderThickness="3">
<ContentPresenter/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>