2013-02-15 66 views
1

是否有一種方法可以在樹視圖中使用具有HierarchicalDataTemplate的命令,以便我可以在樹視圖中的某個項目上點擊進行響應? 我寧願沒有代碼隱藏的解決方案,如果有的話。在HierarchicalDataTemplate中使用WPF TreeView中的命令

這裏是我的TreeView:

<TreeView ItemsSource="{Binding Main.TreeItems}"> 
    <TreeView.ItemTemplate>      
     <HierarchicalDataTemplate ItemsSource="{Binding Path=Children}"> 
      <TextBlock Text="{Binding Path=Header}" /> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate>     
</TreeView> 

回答

0

在您的項目(視圖模型)提供類型的ICommand的屬性並綁定到。所以,你的項目類將是這樣的:

class MyTreeItem 
{ 
    public MyTreeItem() 
    { 
     this.SomeCommand = /* create command here */ null; 
     this.Children = new ObservableCollection<MyTreeItem>(); 
    } 

    public ICommand SomeCommand { get; private set; } 

    public ObservableCollection<MyTreeItem> Children { get; private set; } 
} 

XAML中,那麼你可以這樣寫:

<TreeView ItemsSource="{Binding Main.TreeItems}"> 
    <TreeView.ItemTemplate>      
     <HierarchicalDataTemplate ItemsSource="{Binding Path=Children}"> 
      <TextBlock Text="{TemplateBinding Header}" /> 
      <Button Text="My Command" Command="{TemplateBinding SomeCommand}" /> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate>     
</TreeView> 

我認爲應該工作,至少它相若方式做最後一次我用:)

+0

確定按鈕我可以使用命令屬性。但那不是很好在樹視圖中有按鈕。 ;-)有沒有辦法做到這一點點擊文本塊? – user2025830 2013-02-15 07:18:37

+0

http://stackoverflow.com/questions/7003507/how-to-a-add-a-command-to-a-wpf-textblock可能是你在找什麼:) – 2013-02-15 07:51:16

+0

這是一個很好的解決方案,它運作良好如果我的文本塊不在樹視圖中。但對於我的問題,如果在樹視圖中使用textblock元素,則不起作用。任何想法爲什麼? – user2025830 2013-02-15 08:41:36

相關問題