【发布时间】:2012-04-13 06:47:15
【问题描述】:
我正在推动自己使我编写的应用程序更简单,并且我已经采取了一些措施来做到这一点,但我遇到了一个有趣的问题,我觉得这并不是我独有的.我想知道我做错了什么。
我有一个保存模型对象集合的 ViewModel。该视图是一个 ListView,它显示集合中的所有对象。模型对象具有操作它们的所有逻辑。在每个项目的 ListView 行内,我都有一个按钮,并且需要连接该按钮才能调用模型对象上的方法。
要让它工作,我需要添加一个命令绑定,但要添加到父窗口数据上下文,它在行中传递模型对象的参数,以便模型对象可以在 ViewModel(父窗口数据上下文)来调用正在传入的模型对象上的方法。
这看起来确实比它需要的复杂得多。我愿意扔掉我已经做过的任何事情,没有神圣的奶牛,我只是希望以一种更简单的方法来完成,这样一年后回顾起来很容易弄清楚我在做什么。
【问题讨论】:
-
您可以将绑定与指定父窗口的 RelativeSource 一起使用,然后使用属性 DataContext.MyCommand。
-
为什么你的模型不创建一个由模型视图中的按钮直接调用的命令绑定?
-
我也想过这样做,但尽管我很乐意将业务逻辑嵌入到我的模型中,使用 System.Windows 中的部分 .NET 库(DependencyObject - 所以我可以绑定) 和 System.Windows.Input (ICommand/RoutedCommand) 在模型对象中似乎是错误的。