Я пытаюсь создать дерево, когда пользователь нажимает на строку таблицы
Этот код выбора изменен
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;
}
}
}
Добавить обработчик событий двойного щелчка в систему
public MainWindow()
{
InitializeComponent();
Style rowStyle = new Style(typeof(DataGridRow));
rowStyle.Setters.Add(new EventSetter(DataGridRow.MouseDoubleClickEvent,
new MouseButtonEventHandler(Row_DoubleClick)));
dg.RowStyle = rowStyle;//dg is the name of datagrid
}
Когда я дважды щелкаю по любой строке выходных данных таблицы, информация об источнике отсутствует в информации отладки для этого модуля и System.InvalidOperationException: '' EditItem 'не разрешен для этого представления.'Я искал по различным ссылкам, которые объясняют причину и решение этой проблемы, но никто не решает мою проблему.
Я не могу понять, где я ошибаюсь.Пожалуйста, сообщите мне, как решить эту проблему.