C# 依赖属性还是普通属性

C# 依赖属性还是普通属性,c#,wpf,dependency-properties,C#,Wpf,Dependency Properties,我有一个UserControl,它包含一个按钮。现在,在某些窗口中,我不想显示此按钮。要实现这一点,我有两个选择 创建一个DP。 直接使用viewModel的属性绑定,而不是创建DP。 应使用上述两个选项中的哪一个 更新: 我也找到了第三条路 我在bind命令的CanCommandExecute中传递false,这将使它被禁用为false 我正在使用IsEnabled,并使用Converter实现可见性 如何使用此解决方案?创建DP是一种更干净的实现方式,后者是一种快速而肮脏的方法。创建DP是一

我有一个UserControl,它包含一个按钮。现在,在某些窗口中,我不想显示此按钮。要实现这一点,我有两个选择

创建一个DP。 直接使用viewModel的属性绑定,而不是创建DP。 应使用上述两个选项中的哪一个

更新:

我也找到了第三条路

我在bind命令的CanCommandExecute中传递false,这将使它被禁用为false

我正在使用IsEnabled,并使用Converter实现可见性


如何使用此解决方案?

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

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

有一个属性是可见的,这里不需要DP,只要ViewModel不是DependencyObject,但INotifyPropertyChanged for Visibility的实现是最干净的方法。这也可以调用按钮命令的CanExecute。通过这种方式,您可以清楚地表示您希望以某种方式更改可见性,并绑定到该方式。

在这里,只要您的ViewModel不是DependencyObject,但INotifyPropertyChanged for Visibility的实现是最干净的方式,就不需要DP。这也可以调用按钮命令的CanExecute。通过这种方式,您可以清楚地表示希望以某种方式更改可见性,与此相关。

CanCommandExecute将是解决此问题的最佳解决方案,因为它将使我更干净,并且c代码的数量也将更少。

CanCommandExecute将是解决此问题的最佳解决方案,因为它将使我更干净,并且c代码的数量也将更少。

以下是考虑的顺序 1.DP->清洁方法 2.如果不是DP,则CanCommandExecute->此机制的唯一目的是提供命令处理的启用/禁用支持
3.如果不是DP,则使用BooleanToVisibilityConverter在VM上执行正常属性。不应优先考虑这一点,尤其是当需要启用/禁用多个控件时。

以下是考虑的顺序 1.DP->清洁方法 2.如果不是DP,则CanCommandExecute->此机制的唯一目的是提供命令处理的启用/禁用支持
3.如果不是DP,则使用BooleanToVisibilityConverter在VM上执行正常属性。尤其是当需要启用/禁用多个控件时,不应首选此选项。

只要ViewModel不是DependencyObject,但InotifyPropertyChanged for Visibility的实现是最干净的方法,则此处不需要DP属性。这也可以调用按钮命令的CanExecute。在此处使用属性不需要DP,只要ViewModel不是DependencyObject,而是InotifyPropertyChanged for Visibility的实现,这是最干净的方法。这也可以调用按钮命令的CanExecute。它是一个没有VIewModel的UserControl…但是您的视图将有一个VIewModel?它是一个没有VIewModel的UserControl…但是您的视图将有一个VIewModel?