我有UserControl
,其中包含Button
。现在,在某些Windows中,我不想显示此Button
。为实现这一目标,我认为有两种选择。
应该使用以上哪两个选项?
更新
我也找到了第三种方式。
我在绑定命令的CanCommandExecute中传递false,这将使其IsEnabled为false。
我正在使用带有可见性的IsEnabled使用Converter。
如何解决这个问题?
答案 0 :(得分:2)
对于Visibility,具有属性IsVisible(此处不需要DP,只要您的ViewModel不是DependencyObject但是INotifyPropertyChanged的实现)是最干净的方法。这也可以调用Button Command的CanExecute。这样你就可以清楚地表达出你希望以某种方式改变可见性,然后与之结合。
答案 1 :(得分:1)
创建DP是更简洁的实现方式,后者是快速而肮脏的方法。
答案 2 :(得分:1)
CanCommandExecute将是最好的解决方案,因为它会让我更干净,并且c#代码的数量也会减少。
答案 3 :(得分:1)
以下应该是考虑的顺序
1. DP - >清洁方法
2.如果不是DP,则CanCommandExecute - >此机制的唯一目的是为命令处理提供启用/禁用支持
3.如果不是DP,CanCommandExecute,VM上的Normal属性(使用BooleanToVisibilityConverter)。这不应该是首选(特别是如果有多个控件需要启用/禁用)。