如何将MenuItem集合直接数据绑定到XAML中

时间:2010-02-08 11:42:22

标签: wpf data-binding menuitem

我有一个包含ListBox的UserControl。 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扩大了, UserControl控件 我为这些属性实现了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集合作为子菜单。

请帮我解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:0)

感谢您回复Aran。

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