2013-04-23 5 views
2

В моем WPF TreeView я определил HierarchicalDataTemplate. В его ItemTemplate есть кнопка, у которой Command мне нужно связать с родительским ViewModel, это DataContext родителя HierarchicalDataTemplate или, другими словами, ViewModel, который содержит коллекцию SubItems в приведенном ниже примере. ItemTemplate собственный DataContext - SubItem - используется как CommandParameter.Как связать с DataContext HierarchicalDataTemplate из его ItemTemplate XAML?

<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?

ответ

3

Следующее связывание должно работать:

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

Это связывается со свойством Command в DataContext (в вашем случае VM, который содержит подэлементы сбора), связанный с TreeViewItem, который является предком тока TreeViewItem.

+0

Он действительно работает и является именно тем, что я искал, большое спасибо! – Marc