1

有没有办法在树视图中使用带有 HierarchicalDataTemplate 的命令,以便我可以对单击树视图中的项目做出反应?如果有的话,我更喜欢没有代码隐藏的解决方案。

这是我的树视图:

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

1 回答 1

0

在您的项目(ViewModel)上提供 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>

我认为这应该有效,至少上次我使用它时类似:)

于 2013-02-15T06:52:18.027 回答