2

在我的 WPF TreeView 中,我定义了一个HierarchicalDataTemplate. 在它的ItemTemplate中,有一个按钮,Command我需要将其绑定到父 ViewModel,这是父 ViewModelDataContext的按钮,HierarchicalDataTemplate换句话说,就是SubItems下面示例中包含集合的 ViewModel。ItemTemplates own DataContext- SubItem -将用作CommandParameter.

<TreeView ItemsSource="{Binding Items}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding SubItems}">                
            <HierarchicalDataTemplate.ItemTemplate>
                <DataTemplate>
                    <Button Command="??CmdOnDtaCntxtOfHierDtaTmplt" 
                            CommandParameter="{Binding}" />                                 
                </DataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

如何仅在 XAML 中完成此操作?

4

1 回答 1

3

以下绑定应该有效:

<Button Command="{Binding DataContext.Command, 
        RelativeSource={RelativeSource AncestorLevel=2, AncestorType=TreeViewItem}}"
        CommandParameter="{Binding}" />

这将绑定到与作为当前 TreeViewItem 的父级的 TreeViewItem 关联的 DataContext 的 Command 属性(在您的情况下是包含 SubItems 集合的 VM)。

于 2013-04-23T10:08:50.813 回答