代码之家  ›  专栏  ›  技术社区  ›  IngoB

wpf mvvm:如何绑定devcomponents导航窗格?

  •  0
  • IngoB  · 技术社区  · 6 年前

    我想将devcomponents navigationpane和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的呈现,但随后我陷入了困境,我不知道如何实现菜单项(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 回复  |  直到 6 年前
        1
  •  0
  •   IngoB    6 年前

    缺少的部分是带有itemscontrol的数据模板。

    <DataTemplate DataType="{x:Type local:MainMenuItem}">
        <ItemsControl ItemsSource="{Binding MenuItems}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <WpfRibbon:ButtonDropDown Header="{Binding InnerTitle}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
         </ItemsControl>
    </DataTemplate>