我有一个包含列表框的用户控件。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 公开了以下公共属性... string Name、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 的 ObservableCollection。
我想在单击 DropDownMenuItem 时实现所需的行为,我应该将数据有界的 MenuItems 集合视为子菜单。
请帮助我。谢谢你。