附加到视图模型的命令太多,导致WPF应用程序运行缓慢

附加到视图模型的命令太多,导致WPF应用程序运行缓慢,wpf,performance,mvvm,datagrid,Wpf,Performance,Mvvm,Datagrid,我有一个视图模型,它显示在DataGrid中。视图模型具有11个ICommand 因此,如果我们正在加载一个DataGrid,它包含100多个元素。 总共创建了11*100条命令 加载整个数据网格大约需要1分钟,如果从调试器运行它,通常需要很长时间。请尝试直接执行。如果从调试器运行,通常需要很长时间。请尝试使用exe。通过对每个项目实例化11个命令,您不会将命令与项目相关联。无论有多少项,您都应该有一个命令(在您的示例中为11项)。该命令通过使用 将11个命令放入datagrid或window

我有一个视图模型,它显示在
DataGrid
中。视图模型具有11个
ICommand

因此,如果我们正在加载一个
DataGrid
,它包含100多个元素。 总共创建了11*100条命令


加载整个
数据网格大约需要1分钟,如果从调试器运行它,通常需要很长时间。请尝试直接执行。如果从调试器运行,通常需要很长时间。请尝试使用exe。

通过对每个项目实例化11个命令,您不会将命令与项目相关联。无论有多少项,您都应该有一个命令(在您的示例中为11项)。该命令通过使用


将11个命令放入datagrid或window viewmodel中,并将其从项viewmodel中删除。将每个命令的CommandParameter绑定到您将调用该命令的项目,例如Datagrid中的选定项目。

通过为每个项目实例化11个命令,您不会将命令与项目相关联。无论有多少项,您都应该有一个命令(在您的示例中为11项)。该命令通过使用


将11个命令放入datagrid或window viewmodel中,并将其从项viewmodel中删除。将每个命令的CommandParameter绑定到您将调用该命令的项,例如Datagrid中的选定项。

WPF动态上下文菜单解决了我的问题。。 您可以在datagrid行上使用ContextMenu.ContextMenuOpening事件创建命令,同时右键单击该行


上面的链接是针对列表的。您也可以用同样的方式为DataGrid使用动态上下文菜单解决我的问题。。 您可以在datagrid行上使用ContextMenu.ContextMenuOpening事件创建命令,同时右键单击该行


以上链接用于列表。您也可以用同样的方式使用DataGrid

感谢您的快速回复Dilshod。。。但是我在没有调试器的情况下运行。在调试模式下需要比上面更多的时间。也许你应该试试数据寻呼机。是的..我可以试试数据寻呼机。。但是有没有办法在生成datagrid后创建命令..我的意思是当我们右键单击datagrid的任何一行时,所有创建的命令..(现在它位于视图模型的构造函数中)我认为您可以在加载所有数据后绑定到命令。感谢您的快速回复Dilshod。。。但是我在没有调试器的情况下运行。在调试模式下需要比上面更多的时间。也许你应该试试数据寻呼机。是的..我可以试试数据寻呼机。。但是有没有办法在生成datagrid后创建命令..我的意思是,当我们右键单击datagrid的任何一行时,所有创建的命令..(现在它位于视图模型的构造函数中)我认为您可以在加载所有数据后绑定到命令。