Двойной щелчок по выбранной строке в сетке данных не работает должным образом - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь создать дерево, когда пользователь нажимает на строку таблицы
Этот код выбора изменен

     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 'не разрешен для этого представления.'Я искал по различным ссылкам, которые объясняют причину и решение этой проблемы, но никто не решает мою проблему.
Я не могу понять, где я ошибаюсь.Пожалуйста, сообщите мне, как решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...