ContextMenu和Hierachicaldatatemplate绑定

时间:2016-12-01 12:52:24

标签: c# wpf xaml

在MainWindow中我有一个ObservableCollection" parent"项目。 每个父母都有一个ObservableCollection" device"项目

我的ContextMenu的第一级正确绑定到第一个Collection的项目。问题是,对于每个MenuItem,我总是得到相同的结果(意味着每个MenuItem的datacontext始终是相同的" parent"?)

这是一个截图,以便更好地理解:

ContextMenu

这是XAML代码:

    <StackPanel.Resources>

        <CollectionViewSource Source="{Binding Parents}" x:Key="Parents"/>

        <HierarchicalDataTemplate DataType="{x:Type local:parent}">
            <HierarchicalDataTemplate.ItemsSource>
                <Binding>
                    <Binding.Source>
                        <CompositeCollection>
                            <MenuItem Header="ParentStartAll"/>
                            <MenuItem Header="ParentStopAll"/>
                            <MenuItem Header="ParentRestartAll"/>
                            <Separator/>
                            <CollectionContainer Collection="{Binding Childs, Source={StaticResource Parents}}"/>
                        </CompositeCollection>
                    </Binding.Source>
                </Binding>
            </HierarchicalDataTemplate.ItemsSource>
            <TextBlock Text="{Binding Path=Name}"/>
        </HierarchicalDataTemplate>

        <HierarchicalDataTemplate DataType="{x:Type local:device}">
            <HierarchicalDataTemplate.ItemsSource>
                <Binding>
                    <Binding.Source>
                        <CompositeCollection>
                            <MenuItem Header="StartAll"/>
                            <MenuItem Header="StopAll"/>
                            <MenuItem Header="RestartAll"/>
                            <Separator/>
                            <CollectionContainer Collection="{Binding Processes, Source={StaticResource Parents}}"/>
                        </CompositeCollection>
                    </Binding.Source>
                </Binding>
            </HierarchicalDataTemplate.ItemsSource>
            <TextBlock Text="{Binding Path=Name}"/>
        </HierarchicalDataTemplate>


        [...]


    </StackPanel.Resources>


    <StackPanel.ContextMenu>
        <ContextMenu DataContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}" ItemsSource="{Binding Parents}">
        </ContextMenu>
    </StackPanel.ContextMenu>

我做错了什么?此外,当我尝试第二次打开ContextMenu时,它只显示第一级(只有&#34;父母&#34;)。

任何提示?

这里有新手,所以如果问题太容易或者我犯了一些丑陋的错误,请不要生气。我不得不说在第一时间管理绑定并不容易,我正在努力让这个上下文工作。

非常感谢。

0 个答案:

没有答案