Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 双击datagrid中的选定行无法正常工作_C#_Wpf - Fatal编程技术网

C# 双击datagrid中的选定行无法正常工作

C# 双击datagrid中的选定行无法正常工作,c#,wpf,C#,Wpf,当用户单击表格的一行时,我正在尝试创建树 这是更改的选择代码 private void Row_DoubleClick(object sender, MouseButtonEventArgs e) { DataGridRow row = sender as DataGridRow; // Some operations with this row if (row != null) { var

当用户单击表格的一行时,我正在尝试创建树
这是更改的选择代码

     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;

            }
        }
}
当我双击表输出的任何行时,此模块和系统的调试信息中缺少源信息。InvalidOperationException:“此视图不允许使用EditItem。” 我已经从各种链接中搜索到了这个问题的原因和解决方案,但没有人解决我的问题。

我无法理解我错在哪里。请指导我如何解决这个问题

添加一个try/catch,…查看错误是什么…问题可能与外部进程无关i在此函数中添加try/catch,但不会引发异常,并且在系统的输出中,它会引发一个异常PresentationFramework.dll中发生的未经处理的“system.InvalidOperationException”类型异常“EditItem”不允许用于此视图。未处理的异常:System.InvalidOperationException:“EditItem”不允许用于此视图。请参阅此。
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
    }