【问题标题】:how and where to use DependencyProperty如何以及在何处使用 DependencyProperty
【发布时间】:2010-10-06 18:17:41
【问题描述】:

我是 WPF 的新手,所以在阅读了一段时间后,我推断我的问题需要使用这种模式来处理:DependencyProperty

我希望我的 ToggleButton 有另一个布尔属性。

我的问题是我应该在哪里分配这个属性,以及如何分配?绑定到ToggleButton的对象内部?

假设我有一个类单元格(绑定到这个Button),当我点击它时,我希望从现在开始,它会在触发器打开时保持新面孔。

我的新财产将是:

 bool wasClick 

有人可以向我解释我应该如何编写它并告诉我更多关于这个新概念的信息吗?

编辑: 主要话题是我应该在哪里定义它,所以我希望它与Button 关联,但我应该在哪里编写代码。假设我有一个绑定到Button 的类。我应该写:

public static readonly DependencyProperty IsSpinningProperty = 
       DependencyProperty.Register(
...    "IsSpinning", typeof(Boolean),

在这个类中还是应该在我的视图模型中编写它?如果是这样,在哪里以及如何?

【问题讨论】:

  • 您对依赖属性有什么不了解的地方?您是否尝试过阅读有关依赖属性的 MSDN 文章? msdn.microsoft.com/en-us/library/ms752914.aspxmsdn.microsoft.com/en-us/library/ms750428.aspx 以及互联网上所有其他可用资源?
  • 我没有看到一个直接的例子来说明为什么和一个简单的动机,我想如果我在构建它的同时开始构建一些东西,我会学习但我没有看到'理解我的谷歌中显示的任何示例搜索。

标签: wpf binding dependency-properties


【解决方案1】:

顾名思义(有点糟糕),依赖属性是一种属性,其值可以依赖于其他东西。通常,这意味着其值由 WPF 框架在某些条件下自动(和动态)确定的属性。最常见的情况是:

  • 该属性具有默认值,或从可视树中的祖先继承其值。在这种情况下,属性的值是在没有设置的情况下确定的。
  • 该属性是数据绑定的目标。
  • 属性的值由动画设置。

并非所有由 WPF 框架设置其值的属性都需要是依赖项属性。任何具有公共 getter 和 setter 的 CLR 属性都可以成为双向数据绑定的来源。

在您的情况下,听起来您并不需要依赖属性,如果您使用的是视图模型,则不需要。你可以这样做(假设你已经在你的类中实现了属性更改通知):

private bool _IsChecked;

public bool IsChecked
{
   get { return _IsChecked; } }
   set
   {
      if (value == _IsChecked)
      {
         return;
      }
      _IsChecked = value;
      WasChecked = WasChecked || value;
      OnPropertyChanged("IsChecked");
   }
}

private bool _WasChecked;

public bool WasChecked
{
   get { return _WasChecked; }
   private set
   {
      if (value == _WasChecked)
      {
         return;
      }
      _WasChecked = value;
      OnPropertyChanged("WasChecked");
   }
}

【讨论】:

猜你喜欢
  • 2018-05-16
  • 2022-08-23
  • 2018-03-28
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 2014-09-06
  • 2010-11-25
相关资源
最近更新 更多