Двойной щелчок по выбранной строке не создает дерево более одного раза
Система генерирует только treeview для первой выбранной строки, как это
ProcessName Module SubModule Thread SubThread
Но я хочу, чтобы если пользователь снова выберет систему строк, то сгенерировал другое дерево, подобное этому, и так далее
ProcessName1 Module SubModule Thread SubThread ProcessName2 Module SubModule Thread SubThread
Что я уже пробовал:
Я создал таблицу, которая имеет два столбца, один из которых содержит имя процессов, а второй-идентификатор процессов. Когда пользователь нажимает на любую строку пользователь создает дерево для этой строки в другой панели
Это код обработчика событий для выбранной строки
private void Row_DoubleClick(object sender, MouseButtonEventArgs e) { DataGridRow row = sender as DataGridRow; // Some operations with this row if (row != null) { var item = row.DataContext as Processes; if (item != null) { int id = item.ID; var subModules = new List<ITreeNode>(); var subThreads = new List<ITreeNode>(); for (int i = 0; i <= 3; i++) { subThreads.Add(new SubThread { Name = "subthread" + i }); } var nodes = new List<ITreeNode> { new Thread { Name = "Thread ", ChildNodes = subThreads }, new Module { Name = "Module ", ChildNodes = subModules } }; var runprocesses = new List<RunProcesses>(); Process myProcess = Process.GetProcessById(id); ProcessModule myProcessModule; //Get all the modules associated with 'myProcess". ProcessModuleCollection myProcessModuleCollection = myProcess.Modules; for (int i = 0; i < myProcessModuleCollection.Count; i++) { myProcessModule = myProcessModuleCollection[i]; string s = myProcessModule.FileName; if (i == 1) { runprocesses.Add(new RunProcesses { Name = myProcessModule.FileName, ChildNodes = nodes }); } subModules.Add(new SubModule { Name = s }); //Console.WriteLine("The moduleName is " + myProcessModule.ModuleName); } TreeView.ItemsSource = runprocesses; } }
Это код для таблицы
<pre><Grid> <DataGrid Name="dg" AutoGenerateColumns="False" ItemsSource="{Binding Processes}" SelectionMode="Extended" > <DataGrid.Columns> <DataGridTextColumn Binding="{Binding ID}" Header="PID" Width="100" /> <DataGridTextColumn Binding="{Binding ProcessName}" Header="Process" Width="150" /> </DataGrid.Columns> </DataGrid> </Grid>
Я не знаю, что делать. Будь добр, укажи мне, где я ошибаюсь.