Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 数据绑定到菜单的多种对象类型_Wpf_Data Binding_Menu_Telerik_Hierarchicaldatatemplate - Fatal编程技术网

Wpf 数据绑定到菜单的多种对象类型

Wpf 数据绑定到菜单的多种对象类型,wpf,data-binding,menu,telerik,hierarchicaldatatemplate,Wpf,Data Binding,Menu,Telerik,Hierarchicaldatatemplate,我正在开发一个WPF项目,下面是我的菜单数据模型的代码 class NavigationMenu { public abstract class MenuBase { public MenuBase() { } public MenuBase(string title) { MenuTitle = tit

我正在开发一个WPF项目,下面是我的菜单数据模型的代码

class NavigationMenu
    {
        public abstract class MenuBase
        {
            public MenuBase()
            {
            }

            public MenuBase(string title)
            {
                MenuTitle = title;
            }

            public Guid MenuId { get; set; }
            public string MenuTitle { get; set; }
            public string ImageResourceName { get; set; }
        }

        public class MenuItem : MenuBase
        {
            public MenuItem()
            {

            }

            public MenuItem(string title)
                : base(title)
            {

            }

            public string View { get; set; }
        }

        public class MenuCategory : MenuBase
        {
            public MenuCategory()
            {
                MenuItems = new ObservableCollection<MenuItem>();
            }

            public MenuCategory(string title)
                : base(title)
            {
                MenuItems = new ObservableCollection<MenuItem>();
            }

            public MenuCategory(string CategoryTitle, ObservableCollection<MenuItem> pMenuItems)
                : base(CategoryTitle)
            {
                this.MenuItems = pMenuItems;
            }

            public ObservableCollection<MenuItem> MenuItems { get; set; }
        }

        public class MainMenuItem : MenuBase
        {
            public MainMenuItem()
            {
                MenuCategories = new ObservableCollection<MenuCategory>();
            }

            public MainMenuItem(string title)
                : base(title)
            {
                MenuCategories = new ObservableCollection<MenuCategory>();
            }
            public ObservableCollection<MenuCategory> MenuCategories { get; set; }
        }
    }

我遇到的问题是,MenuCategory显示成功,但没有显示
MenuCategory
中的
MenuItems
。很明显,我没有绑定
菜单项
,而是绑定
菜单项
。但是我不知道如何在上面的数据模板中绑定
MenuItems
?有什么想法吗?

将模型类绑定到数据模板

    <HierarchicalDataTemplate DataType="{x:Type NavigationMenu.MenuCategory }" ItemsSource="{Binding Path=MenuItems }">
            <StackPanel Height="Auto">
                <Image MaxWidth="32" MaxHeight="32" Source="{Binding Path=ImageResourceName}" />
                <TextBlock HorizontalAlignment="Center"> 
                    <TextBlock.Text>
                        <MultiBinding  Converter="{StaticResource myConv}">
                            <Binding Path="MenuId"></Binding>
                            <Binding Path="MenuTitle"></Binding>
                         </MultiBinding>
                    </TextBlock.Text>
               </TextBlock>
            </StackPanel>
    </HierarchicalDataTemplate>


         <HierarchicalDataTemplate DataType="{x:Type NavigationMenu.MenuItem }">
            <StackPanel Height="Auto">
                //....
                <TextBlock HorizontalAlignment="Center" Text="{Binding View}"/> 
                //....
            </StackPanel>
    </HierarchicalDataTemplate>

//....
//....
    <HierarchicalDataTemplate DataType="{x:Type NavigationMenu.MenuCategory }" ItemsSource="{Binding Path=MenuItems }">
            <StackPanel Height="Auto">
                <Image MaxWidth="32" MaxHeight="32" Source="{Binding Path=ImageResourceName}" />
                <TextBlock HorizontalAlignment="Center"> 
                    <TextBlock.Text>
                        <MultiBinding  Converter="{StaticResource myConv}">
                            <Binding Path="MenuId"></Binding>
                            <Binding Path="MenuTitle"></Binding>
                         </MultiBinding>
                    </TextBlock.Text>
               </TextBlock>
            </StackPanel>
    </HierarchicalDataTemplate>


         <HierarchicalDataTemplate DataType="{x:Type NavigationMenu.MenuItem }">
            <StackPanel Height="Auto">
                //....
                <TextBlock HorizontalAlignment="Center" Text="{Binding View}"/> 
                //....
            </StackPanel>
    </HierarchicalDataTemplate>