има ли начин да се използват команди в дървовид сHierarchicalDataTemplate, така че да мога да реагирам върху щракването върху елемент от дървото? Бих предпочел решение без код зад, ако има такова.
Ето моят TreeView:
<TreeView ItemsSource="{Binding Main.TreeItems}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Header}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Отговори:
0 за отговор № 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>
Мисля, че това трябва да работи, поне по същия начин миналия път, когато го използвах :)