Получите двойной доступ к WPF TreeViewItem в C # - PullRequest
0 голосов
/ 15 сентября 2018

Я хочу получить доступ к WPF TreeViewItem двойным щелчком мыши.В моем WPF это выглядит так:

<TreeView x:Name="ExerciseTreeView" Background="#FFF9F9F9" MouseDoubleClick="Exercise_MouseDoubleClick" ScrollViewer.VerticalScrollBarVisibility="Auto"  Grid.Column="2" />

В своем коде C # я добавляю TreeViewItems, как это (у меня есть несколько задач для физиотерапии в списках):

RumpfItem.Header = "Rumpf";

ObereItem.Header = "Obere Extremität";

UntereItem.Header = "Untere Extremität";

DehnenItem.Header = "Dehnen";

FaszienItem.Header = "Faszientraining";



foreach(var item in Model.Categories_List)
{
  Task task = Model.Task_List.First(t => t.TaskID == item.TaskID);

  if (item.CategoryID == 1)
  {
    RumpfItem.Items.Add(new TreeViewItem() { Header = task.Name });
  }
  if (item.CategoryID == 2)
  {
    ObereItem.Items.Add(new TreeViewItem() { Header = task.Name });
  }
  if (item.CategoryID == 3)
  {
    UntereItem.Items.Add(new TreeViewItem() { Header = task.Name });
  }
  if (item.CategoryID == 4)
  {
    DehnenItem.Items.Add(new TreeViewItem() { Header = task.Name });
  }
    if (item.CategoryID == 5)
  {
    FaszienItem.Items.Add(new TreeViewItem() { Header = task.Name });
  }
  }
  ExerciseTreeView.Items.Add(RumpfItem);
  ExerciseTreeView.Items.Add(ObereItem);
  ExerciseTreeView.Items.Add(UntereItem);
  ExerciseTreeView.Items.Add(DehnenItem);
  ExerciseTreeView.Items.Add(FaszienItem);
  OpenTrainingPlan_Tab();

Этоотображается правильно, но когда я делаю двойной щелчок на TreeViewItem ничего не происходит.Итак, как я могу получить доступ к Задаче, на которую я нажал в моем коде C #?

1 Ответ

0 голосов
/ 15 сентября 2018

Вы можете решить эту проблему, установив событие для каждого элемента.Это можно сделать, установив стиль ваших элементов, например:

<TreeView x:Name="MyTreeView">
    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <EventSetter Event="MouseDoubleClick"
                         Handler="HandleItemDoubleClick"/>
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>

Допустим, у вас есть древовидное представление с минимальным элементом, например

public class Item
{
    public string Name { get; set; }
}

, с некоторыми элементами внутри:

MyTreeView.Items.Add(new Item { Name = "1" });
MyTreeView.Items.Add(new Item { Name = "2" });

Затем вы можете получить доступ к нажатому элементу в обработчике, например:

private void HandleItemDoubleClick(object sender, RoutedEventArgs e)
{
    if (((TreeViewItem)sender).DataContext is Item item)
    {
        Debug.WriteLine(item.Name);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...