Использование команд в WPF TreeView с HierarchicalDataTemplate
Есть ли способ использовать команды в древовидной структуре с HierarchicalDataTemplate, чтобы я мог реагировать на щелчок по элементу в древовидном представлении? Я бы предпочел решение без кода, если оно есть.
Вот мой TreeView:
<TreeView ItemsSource="{Binding Main.TreeItems}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Header}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
1 ответ
Предоставить свойство типа ICommand для вашего элемента (ViewModel) и привязать к нему. Таким образом, ваш класс предметов будет выглядеть примерно так:
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>
Я думаю, что это должно сработать, по крайней мере, так было и в прошлый раз, когда я использовал это:)