【问题标题】:How to bind to the DataContext of a HierarchicalDataTemplate from its ItemTemplate XAML?如何从 ItemTemplate XAML 绑定到 HierarchicalDataTemplate 的 DataContext?
【发布时间】:2013-04-16 11:29:43
【问题描述】:

在我的 WPF TreeView 中,我定义了一个 HierarchicalDataTemplate。在其ItemTemplate 中,有一个按钮,我需要将其Command 绑定到父ViewModel,这是父HierarchicalDataTemplateDataContext,或者换句话说,包含集合SubItems 的ViewModel在下面的示例中。 ItemTemplates 自己的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 中完成?

【问题讨论】:

    标签: wpf xaml binding itemtemplate hierarchicaldatatemplate


    【解决方案1】:

    以下绑定应该可以工作:

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

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

    【讨论】:

    • 它确实有效,正是我正在寻找的,非常感谢!
    猜你喜欢
    • 2010-12-03
    • 2020-03-17
    • 2012-10-14
    • 1970-01-01
    • 2014-03-09
    • 2017-11-27
    • 1970-01-01
    • 2015-10-22
    • 2013-02-01
    相关资源
    最近更新 更多