wpf 具有静态和动态加载项的上下文菜单

qmelpv7a  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(190)

我有一个TreeView,我正在尝试为它创建一个ContextMenu。ContextMenu需要有几个静态MenuItem:“test”和“test”。它还应该有一个MenuItem中的MenuItem列表,该MenuItem向用户提供一个动态加载的选项列表(绑定到Parent.Parent.Children)。
我不知道如何将DataTemplate与静态MenuItem组合。这是我的最佳尝试:

<TreeView x:Name="SpatialHierarchyTree" DataContext="{Binding topContainer}" ItemsSource="{Binding Project}" >
<TreeView.Resources>
    <ContextMenu x:Key="moveContext" StaysOpen="True" ItemsSource="{Binding Parent.Parent.Children}">
        <MenuItem Header="Test"/>
        <MenuItem Header="Test"/>
        <MenuItem Header="List">
            <ContextMenu.ItemTemplate>
                <DataTemplate>
                    <MenuItem Header="{Binding Name}"  CommandParameter="{Binding Name}" Click="MenuItem_Click"/>
                </DataTemplate>
            </ContextMenu.ItemTemplate>
        <MenuItem/>
    </ContextMenu>
</TreeView.Resources>
</TreeView>

有没有办法做到这一点?

zpf6vheq

zpf6vheq1#

您可以使用CompositeCollection,例如:

<ContextMenu ...>
    <ContextMenu.Resources>
        <CollectionViewSource x:Key="cvs" Source="{Binding Parent.Parent.Children}" />
    </ContextMenu.Resources>
    <ContextMenu.ItemsSource>
        <CompositeCollection>
            <CollectionContainer Collection="{Binding Source={StaticResource cvs}}" />
            <MenuItem Header="Test"/>
            <MenuItem Header="List"/>
        </CompositeCollection>
    </ContextMenu.ItemsSource>
</ContextMenu>

相关问题