DependencyObject 类

定义

表示参与依赖属性系统的对象。

public ref class DependencyObject : System::Windows::Threading::DispatcherObject
public class DependencyObject : System.Windows.Threading.DispatcherObject
[System.Windows.Markup.NameScopeProperty("NameScope", typeof(System.Windows.NameScope))]
public class DependencyObject : System.Windows.Threading.DispatcherObject
type DependencyObject = class
    inherit DispatcherObject
[<System.Windows.Markup.NameScopeProperty("NameScope", typeof(System.Windows.NameScope))>]
type DependencyObject = class
    inherit DispatcherObject
Public Class DependencyObject
Inherits DispatcherObject
继承
DependencyObject
派生
属性

示例

以下示例派生自 DependencyObject 以创建新的抽象类。 然后, 类注册一个附加属性,并包括该附加属性的支持成员。

public abstract class AquariumObject3 : DependencyObject
{
    public enum Bouyancy
    {
        Floats,
        Sinks,
        Drifts
    }
    public static readonly DependencyProperty BouyancyProperty = DependencyProperty.RegisterAttached(
      "Bouyancy",
      typeof(Bouyancy),
      typeof(AquariumObject3),
      new FrameworkPropertyMetadata(Bouyancy.Floats, FrameworkPropertyMetadataOptions.AffectsArrange),
      new ValidateValueCallback(ValidateBouyancy)
    );
    public static void SetBouyancy(UIElement element, Bouyancy value)
    {
        element.SetValue(BouyancyProperty, value);
    }
    public static Bouyancy GetBouyancy(UIElement element)
    {
        return (Bouyancy)element.GetValue(BouyancyProperty);
    }
    private static bool ValidateBouyancy(object value)
    {
        Bouyancy bTest = (Bouyancy) value;
        return (bTest == Bouyancy.Floats || bTest == Bouyancy.Drifts || bTest==Bouyancy.Sinks);
    }
    public static readonly DependencyProperty IsDirtyProperty = DependencyProperty.Register(
      "IsDirty",
      typeof(Boolean),
      typeof(AquariumObject3)
    );
}
Public MustInherit Class AquariumObject3
    Inherits DependencyObject
    Public Enum Bouyancy
        Floats
        Sinks
        Drifts
    End Enum
    Public Shared ReadOnly BouyancyProperty As DependencyProperty = DependencyProperty.RegisterAttached("Bouyancy", GetType(Bouyancy), GetType(AquariumObject3), New FrameworkPropertyMetadata(Bouyancy.Floats, FrameworkPropertyMetadataOptions.AffectsArrange), New ValidateValueCallback(AddressOf ValidateBouyancy))
    Public Shared Sub SetBouyancy(ByVal element As UIElement, ByVal value As Bouyancy)
        element.SetValue(BouyancyProperty, value)
    End Sub
    Public Shared Function GetBouyancy(ByVal element As UIElement) As Bouyancy
        Return CType(element.GetValue(BouyancyProperty), Bouyancy)
    End Function
    Private Shared Function ValidateBouyancy(ByVal value As Object) As Boolean
        Dim bTest As Bouyancy = CType(value, Bouyancy)
        Return (bTest = Bouyancy.Floats OrElse bTest = Bouyancy.Drifts OrElse bTest = Bouyancy.Sinks)
    End Function
    Public Shared ReadOnly IsDirtyProperty As DependencyProperty = DependencyProperty.Register("IsDirty", GetType(Boolean), GetType(AquariumObject3))
End Class

注解

DependencyObject支持在其许多派生类上Windows Presentation Foundation (WPF) 属性系统服务。

属性系统的主要功能是计算属性值,并提供有关已更改的值的系统通知。 参与属性系统的另一个关键类是 DependencyPropertyDependencyProperty 支持将依赖属性注册到属性系统中,并提供有关每个依赖属性的标识和信息,而 DependencyObject 作为基类,对象可以使用依赖属性。

DependencyObject 服务和特征包括:

  • 依赖属性承载支持。 可以通过调用 Register 方法并将方法的返回值存储为类中的公共静态字段来注册依赖属性。

  • 附加属性托管支持。 可以通过调用 RegisterAttached 方法,并将方法的返回值存储为类中的公共静态只读字段来注册附加属性。 (还有其他成员要求;请注意,这表示附加属性的 WPF 特定实现。有关详细信息,请参阅 附加属性概述。) 然后可以在派生自 DependencyObject的任何类上设置附加属性。

  • 获取、设置和清除 上存在的任何依赖属性的值的 DependencyObject实用工具方法。

  • 元数据、强制值支持、属性更改通知,以及重写依赖属性或附加属性的回调。 此外, DependencyObject 类还有助于获取依赖属性的每个所有者属性元数据。

  • 派生自 ContentElementFreezableVisual的类的通用基类。 另 UIElement一个基元素类 (具有包含 Visual.)

构造函数

DependencyObject()

初始化 DependencyObject 类的新实例。

属性

DependencyObjectType

获取 DependencyObjectType 包装此实例的 CLR 类型的 。

Dispatcher

获取与此 Dispatcher 关联的 DispatcherObject

(继承自 DispatcherObject)
IsSealed

获取一个值,该值指示此实例当前是否为密封的(只读)。

方法

CheckAccess()

确定调用线程是否可以访问此 DispatcherObject

(继承自 DispatcherObject)
ClearValue(DependencyProperty)

清除属性的本地值。 要清除的属性由 DependencyProperty 标识符指定。

ClearValue(DependencyPropertyKey)

清除只读属性的本地值。 要清除的属性由 DependencyPropertyKey 指定。

CoerceValue(DependencyProperty)

对指定依赖属性的值进行强制。 通过对调用方 DependencyObject 上存在的依赖属性的属性元数据中所指定的任何 CoerceValueCallback 函数进行调用来完成此操作。

Equals(Object)

确定提供的 DependencyObject 是否等效于当前 DependencyObject

GetHashCode()

获取此 DependencyObject 的哈希代码。

GetLocalValueEnumerator()

创建一个专用的枚举数,用于确定哪些依赖项属性在此 DependencyObject 上具有以本地方式设置的值。

GetType()

获取当前实例的 Type

(继承自 Object)
GetValue(DependencyProperty)

DependencyObject 的此实例返回依赖属性的当前有效值。

InvalidateProperty(DependencyProperty)

重新评估指定依赖属性的有效值。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

每当更新此 DependencyObject 的任何依赖属性的有效值时调用。 更改的特定依赖属性将在事件数据中报告。

ReadLocalValue(DependencyProperty)

如果存在,则返回依赖属性的本地值。

SetCurrentValue(DependencyProperty, Object)

设置依赖属性的值而不更改其值源。

SetValue(DependencyProperty, Object)

设置依赖属性的本地值,该值由其依赖属性标识符指定。

SetValue(DependencyPropertyKey, Object)

设置一个只读依赖属性的本地值,该值由依赖属性的 DependencyPropertyKey 标识符指定。

ShouldSerializeProperty(DependencyProperty)

返回一个值,该值指示序列化进程是否应序列化所提供的依赖属性的值。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
VerifyAccess()

强制调用线程具有此 DispatcherObject 的访问权限。

(继承自 DispatcherObject)

适用于

另请参阅