将WPF树视图转换为菜单
我无法将此工作树视图转换为菜单 此树视图显示正确将WPF树视图转换为菜单,wpf,menu,treeview,menuitem,treeviewitem,Wpf,Menu,Treeview,Menuitem,Treeviewitem,我无法将此工作树视图转换为菜单 此树视图显示正确 <UserControl.DataContext> <ObjectDataProvider ObjectType="{x:Type storage:Database}" MethodName="GetGroups"/> </UserControl.DataContext> <UserControl.Resources> <conv
<UserControl.DataContext>
<ObjectDataProvider ObjectType="{x:Type storage:Database}"
MethodName="GetGroups"/>
</UserControl.DataContext>
<UserControl.Resources>
<converters:PathToNameConverter x:Key="pathToNameConverter" />
</UserControl.Resources>
<TreeView Name="TreeViewMain" ItemsSource="{Binding Path=.}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type storage:File}">
<TreeViewItem Header="{Binding Path=Name, Mode=TwoWay}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type storage:Group}">
<TreeViewItem>
<TreeViewItem.Header>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<Image Source="../Images/Core/16x16/Folder.png" />
<TextBlock Text="{Binding Path=Name, Mode=TwoWay}"/>
</StackPanel>
</TreeViewItem.Header>
<ItemsControl ItemsSource="{Binding Path=Groups}" />
<ItemsControl ItemsSource="{Binding Path=Files}" />
</TreeViewItem>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
我把所有东西都改成了菜单,但它不起作用。有一个组名和图像,箭头指向右边,它看起来像在工作,但当我点击它时它不会展开
<UserControl.DataContext>
<ObjectDataProvider ObjectType="{x:Type storage:Database}"
MethodName="GetGroups"/>
</UserControl.DataContext>
<Menu Name="MenuMain" ItemsSource="{Binding Path=.}">
<Menu.Resources>
<HierarchicalDataTemplate DataType="{x:Type storage:File}">
<MenuItem Header="{Binding Path=Name, Mode=TwoWay}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type storage:Group}">
<MenuItem>
<MenuItem.Header>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<Image Source="../Images/Core/16x16/Folder.png" />
<TextBlock Text="{Binding Path=Name, Mode=TwoWay}" />
</StackPanel>
</MenuItem.Header>
<ItemsControl ItemsSource="{Binding Path=Groups}" />
<ItemsControl ItemsSource="{Binding Path=Files}" />
</MenuItem>
</HierarchicalDataTemplate>
</Menu.Resources>
</Menu>
我做错了什么?我并没有真正看到你做错了什么,我将发布有效的代码
<Menu ItemsSource="{Binding Menus}" Name="menu" Height="20">
<Menu.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Items}" DataType="{x:Type plugin:MenuEntry}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="Icon" Value="{Binding Icon}" />
<Setter Property="InputGestureText" Value="{Binding InputGestureText}" />
<Setter Property="IsCheckable" Value="{Binding IsCheckable}" />
<Setter Property="IsChecked" Value="{Binding IsChecked}" />
<!-- Handle separators -->
<Style.Triggers>
<DataTrigger Binding="{Binding Header}" Value="[Separator]">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Separator />
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<ContentControl Content="{Binding Header}"/>
</HierarchicalDataTemplate>
</Menu.ItemTemplate>
</Menu>
菜单绑定到对象的简单集合,这些对象具有标题、图标等所有属性。菜单还具有包含子项的Items属性
这不完全是你想要的,但也许你能解决它。我记得和你一样尝试过类似的方法,我记得失败得很惨。菜单以自己的方式生成MenuItem对象(您正在尝试在其中添加另一个对象-您不能这样做,您只需对其进行样式设置),而且这两个Items控件在我看来有点奇怪(虽然我知道您需要它们)。我并没有真正看到您做错了什么,我将发布有效的代码
<Menu ItemsSource="{Binding Menus}" Name="menu" Height="20">
<Menu.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Items}" DataType="{x:Type plugin:MenuEntry}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="Icon" Value="{Binding Icon}" />
<Setter Property="InputGestureText" Value="{Binding InputGestureText}" />
<Setter Property="IsCheckable" Value="{Binding IsCheckable}" />
<Setter Property="IsChecked" Value="{Binding IsChecked}" />
<!-- Handle separators -->
<Style.Triggers>
<DataTrigger Binding="{Binding Header}" Value="[Separator]">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Separator />
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<ContentControl Content="{Binding Header}"/>
</HierarchicalDataTemplate>
</Menu.ItemTemplate>
</Menu>
菜单绑定到对象的简单集合,这些对象具有标题、图标等所有属性。菜单还具有包含子项的Items属性
这不完全是你想要的,但也许你能解决它。我记得和你一样尝试过类似的方法,我记得失败得很惨。菜单以自己的方式生成MenuItem对象(您正在尝试在其中添加另一个对象-您不能这样做,您只需设置样式即可),而且这两个Items控件在我看来有点奇怪(虽然我知道您需要它们)。感谢您的回答,它很有效,但它并不能真正解决我的问题。我找不到我的树视图到菜单的一对一转换;出于某种原因,我被引导去相信它的存在。我用代码实现了我的菜单。干杯谢谢你的回答,这很有效,但并不能真正解决我的问题。我找不到我的树视图到菜单的一对一转换;出于某种原因,我被引导去相信它的存在。我用代码实现了我的菜单。干杯