依赖属性或普通属性

时间:2012-06-20 04:59:51

标签: c# wpf dependency-properties

我有UserControl,其中包含Button。现在,在某些Windows中,我不想显示此Button。为实现这一目标,我认为有两种选择。

  1. 创建DP。
  2. 直接与viewModel的属性绑定,而不是创建DP。
  3. 应该使用以上哪两个选项?

    更新

    我也找到了第三种方式。

    我在绑定命令的CanCommandExecute中传递false,这将使其IsEnabled为false。

    我正在使用带有可见性的IsEnabled使用Converter。

    如何解决这个问题?

4 个答案:

答案 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)。这不应该是首选(特别是如果有多个控件需要启用/禁用)。