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
}