在 WPF 中,自定义命令有 command_Executed 和 command_CanExecute 等事件处理程序,最好的做法是实现逻辑不应该直接在代码隐藏类中实现,它应该只包含对更高级别实现逻辑的函数调用。
在制作自定义命令的时候,如果命令的handler functions中只有一个函数调用,直接放在code-behind里面很简单,但是如果有多个函数调用,或者函数调用在基础上返回一些东西怎么办其中要做出决定(特别是在禁用/启用命令的 command_CanExecute 函数的情况下,必须决定何时启用或禁用命令)。我一直在考虑的可能性如下,哪一个在可维护性、保持代码清洁、软件工程原则和最佳实践方面最合适?
将所有函数调用和决策语句保留在代码隐藏中(在 command_execute 或 command_execute 调用的代码隐藏中的某个函数中)。如果代码很简单,那很好,但是当后面的代码中有很多处理程序时,事情就会变得丑陋。这里没有实现代码,只有我之前提到的决策代码。
将实现逻辑保留在定义命令并使其可通过静态属性访问的类中。现在,代码隐藏中的处理程序将只有 1 个函数调用,并且如果需要,将接收返回值。
在实现应用程序实际功能的更高级别的类中实现它,以便代码隐藏处理程序只有一个函数调用。这是最有意义的,但这个选项在我心中产生了疑问,因为在某些情况下,命令处理程序可能必须调用许多不同的不相关类的方法,因此很难决定该逻辑的放置位置。
我错过的任何其他内容。