0

我有一个包含列表框的用户控件。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 集合视为子菜单。

请帮助我。谢谢你。

4

1 回答 1

0

感谢您的回复阿兰。

没关系,我的代码后面有一个小错误。我没有正确设置 MenuItems 集合。现在工作正常。谢谢。

于 2010-02-09T10:00:59.407 回答