У меня есть UserControl, который содержит ListBox. И ListBox использует другой UserControl в качестве DataTemplate.
<ListBox x:Uid="SectionList" x:Name="SectionList" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<expander:ExpanderDataTemplate/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
В коде позади я установил контекст данных в ObservableCollection. ExpanderItem предоставляет следующие общедоступные свойства ...
Имя строки,
ObservableCollection MenuItems,
bool Expanded,
UserControl Control
Я реализовал интерфейс INotifyPropertyChanged для этих свойств.
И мой ExpanderDataTemplate выглядит так ...
<Border BorderThickness="0,1">
<Expander IsExpanded="{Binding Path=Expanded}" Content="{Binding Path=Control}">
<Expander.Header>
<StackPanel>
<TextBlock Text="{Binding Path=Name}"/>
<Menu x:Name="ConfigurationMenu" Background="Transparent">
<MenuItem x:Name="DropDownMenuItem" ItemsSource="{Binding Path=MenuItems}">
<MenuItem.Header>
<Image Source="..\..\images\dropdown_arrow.gif" SnapsToDevicePixels="True" Stretch="None"/>
</MenuItem.Header>
</MenuItem>
</Menu>
</StackPanel>
</Expander.Header>
</Expander>
</Border>
Здесь вы можете видеть, что у меня есть данные, ограниченные всеми четырьмя свойствами Expanded, Control, Name и MenuItems. Все свойства становятся правильно и видимыми, ожидайте MenuItems. MenuItems - это наблюдаемая коллекция System.Windows.Controls.MenuItem.
Я хочу добиться желаемого поведения, когда я нажимаю DropDownMenuItem, я должен видеть ограниченную данными коллекцию MenuItems в качестве подменю.
Пожалуйста, помогите мне в этом. Спасибо.