Можно ли создать шаблон ListBoxItem, чтобы в визуальном дереве не отображался ContentPresenter, и у меня был непосредственно шаблон данных под ListBoxItem?
ListBoxItem создан по шаблону без ContentPresenter?
Ответы (1)
Вы можете заменить стиль ListBoxItem на тот, который не имеет ContentPresenter, например этот самый простой:
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<TextBlock Text="{Binding}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Для более реалистичного стиля вы можете скопировать стиль ListBoxItem по умолчанию из здесь и замените ContentPresenter на то, что соответствует вашим потребностям.
person
Clemens
schedule
11.03.2014
Когда я использую такой шаблон, шаблоны данных не применяются к элементам.
- person Gerard; 11.03.2014
Конечно, нет, потому что именно для этого существует ContentPresenter. Когда контейнер элементов (например, ListBoxItem) подготовлен для отображения элемента данных,
ItemTemplate
ItemsControl (например, ListBox) применяется к свойству ContentTemplate
ContentPresenter. См. раздел «Примечания» в Документация MSDN ItemTemplate для получения более подробной информации.
- person Clemens; 11.03.2014