ContentControl — установщик содержимого внутри ItemsControl

У меня странное поведение в моем ContentControl, и я не понимаю, почему оно так себя ведет.

Этот код Xaml перечисляет элементы моей ObservableCollection

<ItemsControl ItemsSource="{Binding Stops}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ContentControl>

                <local:TripDetailListItemControl />

            </ContentControl>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Но это отображает только первый элемент списка

<ItemsControl ItemsSource="{Binding Stops}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ContentControl>
                <ContentControl.Style>
                    <Style TargetType="{x:Type ContentControl}">
                        <Setter Property="Content">
                            <Setter.Value>

                                <local:TripDetailListItemControl/>

                            </Setter.Value>
                        </Setter>
                    </Style>
                </ContentControl.Style>
            </ContentControl>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

В чем разница? Я пропустил Enumarator с переопределением стиля?

Предыстория, почему мне это нужно, заключается в том, что у меня есть свойство в этом TripDetailListItemControl, которое меняет представление этого элемента. Поэтому я хочу, чтобы DataTrigger в этом стиле отображал его по-другому.

Но список не отображается в первую очередь. Что мне нужно добавить в Content Setter для отображения всех элементов?


person CanereCurrere    schedule 24.12.2017    source источник
comment
«Отсутствие перечислителя с переопределением стиля» ничего не значит, так что, вероятно, проблема не в этом. Попробуйте написать DataTemplateSelector для ItemsControl для замены разных шаблонов элементов. Это правильный способ сделать это. Также убедитесь, что ваша коллекция заполнена. Не делайте предположений о том, что не так. Проверьте каждую возможность.   -  person 15ee8f99-57ff-4f92-890c-b56153    schedule 24.12.2017


Ответы (1)


добавить на основе:

<Style TargetType="{x:Type ContentControl}" BasedOn="{StaticResource {x:Type ContentControl}}">

or:

<Style TargetType="{x:Type ContentControl}">
    <Setter Property="Content">
        <Setter.Value>
            <ContentPresenter></ContentPresenter>
        </Setter.Value>
     </Setter>
     <Setter Property="ContentTemplate">
         <Setter.Value>
             <DataTemplate>
                 <local:TripDetailListItemControl/>
             </DataTemplate>
         </Setter.Value>
     </Setter>
</Style>
person Milan    schedule 24.12.2017