Попробуйте это:
<s:SurfaceListBox.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource={Binding substeps} />
</DataTemplate>
</s:SurfaceListBox.ItemTemplate>
Ваша проблема в том, что привязка строки к ObservableCollection
просто сделает ToString()
для этой коллекции. Вам нужно перебрать коллекцию и отобразить каждый элемент. Используя ItemsControl
, как я уже делал, вы также можете DataTemplate
каждую подзадачу по своему усмотрению.
Привязка шаблона управления
Привязка заголовка Expander
не будет работать, поскольку она находится внутри ControlTemplate
, которая находится внутри Style
. DataContext
для шаблона элемента управления будет не вашим ViewModel
, а самим элементом управления (т.е. SurfaceListBox
). Подобный вопрос здесь .
Есть два способа исправить это.
1.Использование DataTemplate
<s:SurfaceListBox.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Description}"
IsExpanded="True" >
<ItemsControl ItemsSource={Binding substeps} />
</Expander >
</DataTemplate>
</s:SurfaceListBox.ItemTemplate>
2.Использование TemplatedParent
переплет
<Expander Header="{Binding Content.Description, , RelativeSource={RelativeSource TemplatedParent}}"
IsExpanded="True">
Я лично рекомендую вариант 1.