【发布时间】:2011-02-27 06:23:10
【问题描述】:
我有一个 WPF 应用程序,它的菜单正在使用命令功能。一切都连接得很好,当我单击菜单中的按钮时,命令运行。但是,我无法让按钮的 IsEnabled 状态尊重我的命令的 CanExecute 部分。
一个挑战是命令需要查看您在 UI 中执行的操作。例如,只有在选择 ListBox 中的某些项目时,一个命令才可用,因此我需要获取对 ListBox 的引用......但由于该命令在我的视图模型(MVVM 模式)中公开,因此它没有访问 UI(顺便说一句,菜单在一个用户控件 [parent=mainwindow] 中,而 ListBox 在另一个用户控件 [parent=mainwindow] 中)。
此外,即使我对命令的 CanExecute 方法进行硬编码以返回 false,按钮的 Enabled 属性也不会改变……命令不会触发,但不会改变……令人沮丧。我假设我需要修改/引发 CanExecuteChanged 事件,但我不确定何时应该这样做(找不到好的示例)。
反馈?
【问题讨论】: