Как привязать коллекцию MenuItem непосредственно к XAML - PullRequest
0 голосов
/ 08 февраля 2010

У меня есть 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 в качестве подменю.

Пожалуйста, помогите мне в этом. Спасибо.

1 Ответ

0 голосов
/ 09 февраля 2010

Спасибо за ваш ответ, Аран.

Неважно, из моего кода произошла небольшая ошибка. Я не настраивал коллекцию MenuItems должным образом. Сейчас работает нормально. Спасибо.

...