我喜欢将按钮的Command属性绑定到ICommand对象以处理Click事件和启用/禁用状态。有没有办法,使用我自己的命令/ CommandBinding类/ MarkerExtension /附加的自定义DependencyProperty /(无论如何),该命令绑定也会影响其他目标属性?
比如说我使用自己的派生命令,它有一个Visible布尔属性。在绑定按钮的Command属性时,我希望我的命令对象的Visible属性对按钮的可见性起作用,就像CanExecute方法对IsEnabled属性起作用一样(不需要绑定按钮的IsEnabled属性)。
有没有办法实现这样的目标?
答案 0 :(得分:1)
对于按钮上的其他依赖项属性(如Visibility),您应该将其绑定到ViewModel类中的属性(因为您标记了MVVM),该属性应该实现INotifyPropertyChanged interfac。然后,您可以在ViewModel类上操作该属性以影响按钮可见性。这里有正常绑定无法解决的问题吗?
答案 1 :(得分:1)
是的,它可以。具有自定义逻辑并具有关于wpf黑客的一些知识的定制命令可以放置在按钮上,并且可以用于除了在启用和禁用状态之间切换之外的其他事项。
同时,不,它不能。命令用于用户输入,因此它为什么它会在Button.Clicked上发出命令,但它在wpf世界中并没有太多意义来附加命令只是为了改变Visibility。如果你想改变Visibility,wpf为你提供简单的Binding而不是Commands。无论如何,改变可见性并不是用户输入。仅对用户输入使用命令,其他所有内容都使用Bindings。
Futhermore从X.j阅读帖子,它解释了如何在Button.Visibility属性上正确使用Binding。