1

我有一个UserControl,它包含一个Button. 现在,在某些 Windows 中,我不想显示这个Button. 为了实现这一点,我看到了两个选择。

  1. 创建一个 DP。
  2. 直接与 viewModel 的属性绑定,而不是创建 DP。

应该使用以上 2 个选项中的哪一个?

更新:

我也找到了第三种方法。

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

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

这个解决方案怎么样?

4

4 回答 4

2

为可见性拥有一个属性 IsVisible(这里不需要 DP,只要您的 ViewModel 不是 DependencyObject 而是 INotifyPropertyChanged 的​​实现)是最干净的方法。这也可以调用按钮命令的 CanExecute。这样你就可以清楚地表达你想以某种方式改变可见性,并绑定到那个。

于 2012-06-20T05:49:12.460 回答
1

创建 DP 是更干净的实现方式,而后者是快速而肮脏的方法。

于 2012-06-20T05:06:17.520 回答
1

以下应该是考虑的顺序
1. DP -> 更清洁的方法
2. 如果不是 DP,则 CanCommandExecute -> 此机制的唯一目的是提供对命令处理的启用/禁用支持
3. 如果不是 DP,CanCommandExecute,Normal 属性 on虚拟机(带有 BooleanToVisibilityConverter)。这不应该是首选(特别是如果需要启用/禁用多个控件)。

于 2012-06-20T06:23:04.313 回答
1

CanCommandExecute 将是最好的解决方案,因为它会让我更干净,而且它的 c# 代码数量也会更少。

于 2012-06-20T06:06:03.633 回答