1

ツリービューのアイテムのクリックに反応できるように、HierarchicalDataTemplateを使用してツリービューでコマンドを使用する方法はありますか?コードビハインドがない場合は、コードビハインドのないソリューションをお勧めします。

これが私のTreeViewです:

<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

Item(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 に答える