1

我喜欢将按钮的 Command 属性绑定到 ICommand 对象如何处理 Click 事件和启用/禁用状态。有什么办法,使用我自己的命令 / CommandBinding 类 / MarkerExtension / 附加的自定义 DependencyProperty / (无论如何),该命令绑定也会影响其他目标属性?

例如,我使用我自己的派生命令,该命令具有 Visible 布尔属性。绑定按钮的 Command 属性后,我希望命令对象的 Visible 属性作用于按钮的可见性,就像 CanExecute 方法作用于 IsEnabled 属性一样(无需绑定按钮的 IsEnabled 属性)。

有没有办法实现这样的目标?

4

2 回答 2

1

对于按钮上的其他依赖属性(如 Visibility),您应该将其绑定到 ViewModel 类中的属性(因为您标记了 MVVM),该属性应实现 INotifyPropertyChanged 接口。然后您可以操作 ViewModel 类上的属性来影响按钮的可见性。这里有什么不能通过普通绑定解决的吗?

于 2013-10-11T21:53:11.723 回答
1

是的,它可以。可以将具有自定义逻辑和一些关于 wpf hacking 知识的自定义命令放置在 Button 上,并且可以用于其他事情,而不仅仅是在启用和禁用状态之间切换。

同时,不,它不能。命令用于用户输入,因此为什么在 Button.Clicked 上触发命令是有意义的,但在 wpf 世界中附加命令只是为了更改可见性并没有多大意义。如果您希望更改可见性,wpf 为您提供简单的绑定而不是命令。无论如何,改变可见性并不是真正的用户输入。仅在用户输入上使用命令,其他一切都使用绑定。

此外,还阅读了 Xj 的帖子,它向您解释了如何在 Button.Visibility 属性上正确使用 Binding。

于 2013-10-11T23:09:56.393 回答