WPF MVVM: Как связать DevComponents NavigationPane? - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу связать панель навигации DevComponents с PaneItems (элементы главного меню) с ButtonDropDowns (элементы меню) со свойством типа List<MainMenuItems> в viewmodel, но я не знаю, как интегрировать меню в основные меню.

Вот как статически построить меню:

<WpfRibbon:NavigationPane Width="200" LargeItemsCount="10">
    <WpfRibbon:PaneItem Header="MainMenu1">
        <StackPanel>
            <WpfRibbon:ButtonDropDown Header="Menu1"/>
            <WpfRibbon:ButtonDropDown Header="Menu2"/>
        </StackPanel>
    </WpfRibbon:PaneItem>
    <WpfRibbon:PaneItem Header="MainMenu2">
        <StackPanel>
            <WpfRibbon:ButtonDropDown Header="Menu3"/>
            <WpfRibbon:ButtonDropDown Header="Menu4"/>
        </StackPanel>
    </WpfRibbon:PaneItem>
</WpfRibbon:NavigationPane>

Здесь, в версии с привязкой к данным, я получаю визуализированные элементы PaneItems, но затем я застрял и не вижу, как реализовать меню.items (ButtonDropDowns):

<WpfRibbon:NavigationPane Width="200" LargeItemsCount="10"
    ItemsSource="{Binding MainMenuItems}">
    <WpfRibbon:NavigationPane.ItemContainerStyle>
        <Style TargetType="{x:Type WpfRibbon:PaneItem}">
            <Setter Property="Header" Value="{Binding Title}" />
        </Style>
    </WpfRibbon:NavigationPane.ItemContainerStyle>
</WpfRibbon:NavigationPane>

Модель выглядит следующим образом:

MainMenuItems = new List<KisMainMenuItem>
{
    new KisMainMenuItem(title: "MainMenu1", image: @"img/books.png", menuItems: new List<KisMenuItem>
    {
        new KisMenuItem(innerTitle: "Menu1", image: @"img/books.png"),
        new KisMenuItem(innerTitle: "Menu2", image: @"img/books.png")
    }),
    new KisMainMenuItem("MainMenu2", @"img/books.png", new List<KisMenuItem>
    {
        new KisMenuItem("Menu3", @"img/books.png"),
        new KisMenuItem("Menu4", @"img/books.png")
    })
};

1 Ответ

0 голосов
/ 29 ноября 2018

Отсутствующей частью был DataTemplate с ItemsControl.

<DataTemplate DataType="{x:Type local:MainMenuItem}">
    <ItemsControl ItemsSource="{Binding MenuItems}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <WpfRibbon:ButtonDropDown Header="{Binding InnerTitle}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
     </ItemsControl>
</DataTemplate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...