Classe DependencyProperty (System.Windows)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Classe DependencyProperty
Il presente articolo è stato tradotto manualmente. Per visualizzare questa pagina e contemporaneamente visualizzarne il contenuto in lingua inglese, passare alla visualizzazione semplificata.

Rappresenta una proprietà che può essere impostata tramite metodi quali applicazione di stili, associazione dati, animazione ed ereditarietà.

Gerarchia di ereditarietà

System.Object
  System.Windows.DependencyProperty

Spazio dei nomi:  System.Windows
Assembly:  WindowsBase (in WindowsBase.dll)
XMLNS per XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
Sintassi

Visual Basic
<TypeConverterAttribute("System.Windows.Markup.DependencyPropertyConverter, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null")> _
Public NotInheritable Class DependencyProperty
C#
[TypeConverterAttribute("System.Windows.Markup.DependencyPropertyConverter, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null")]
public sealed class DependencyProperty
Visual C++
[TypeConverterAttribute(L"System.Windows.Markup.DependencyPropertyConverter, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null")]
public ref class DependencyProperty sealed
F#
[<Sealed>]
[<TypeConverterAttribute("System.Windows.Markup.DependencyPropertyConverter, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null")>]
type DependencyProperty =  class end
Utilizzo della sintassi XAML per attributi
<object property="dependencyPropertyName"/>
- or -
<object property="ownerType.dependencyPropertyName"/>
- or -
<object property="attachedPropertyOwnerType.attachedPropertyName"/>

Valor XAML

dependencyPropertyName

Una stringa che specifica DependencyProperty.Name della proprietà di dipendenza desiderata. Questo può essere preceduto dal prefisso dello spazio dei nomi XML se la proprietà non è nello spazio dei nomi XML predefinito (per i dettagli, vedere Spazi dei nomi XAML e mapping dello spazio dei nomi per XAML WPF).

ownerType.dependencyPropertyName

Una stringa che specifica il tipo di proprietario di una proprietà di dipendenza, un punto (.), quindi la proprietà DependencyProperty.Name. Un oggetto ownerType può essere preceduto anche da un prefisso dello spazio dei nomi XML. Questo utilizzo è tipico di stili ad associazione tardiva e di modelli in cui il proprietario della proprietà di dipendenza deve essere specificato per l'analisi di contesto perché TargetType non è ancora conosciuto. Per ulteriori informazioni, vedere Styling and Templating.

attachedPropertyOwnerType . attachedPropertyName

Una stringa che specifica il proprietario di una proprietà associata, un punto (.), quindi il nome della proprietà associata. Un oggetto attachedPropertyOwnerType può essere preceduto anche da un prefisso dello spazio dei nomi XML.

Il tipo DependencyProperty espone i seguenti membri.

Proprietà

  Nome Descrizione
Proprietà pubblica DefaultMetadata Ottiene i metadati predefiniti della proprietà di dipendenza.
Proprietà pubblica GlobalIndex Ottiene un valore generato internamente che identifica in modo univoco la proprietà di dipendenza.
Proprietà pubblica Name Ottiene il nome della proprietà di dipendenza.
Proprietà pubblica OwnerType Ottiene il tipo dell'oggetto che ha registrato la proprietà di dipendenza con il sistema della proprietà, o che è stato aggiunto come proprietario della proprietà.
Proprietà pubblica PropertyType Ottiene il tipo che la proprietà di dipendenza utilizza per il valore.
Proprietà pubblica ReadOnly Ottiene un valore che indica se la proprietà di dipendenza identificata da questa istanza DependencyProperty è una proprietà di dipendenza di sola lettura.
Proprietà pubblica ValidateValueCallback Ottiene il callback di convalida del valore per la proprietà di dipendenza.
In alto
Metodi

  Nome Descrizione
Metodo pubblico AddOwner(Type) Aggiunge un altro tipo come proprietario di una proprietà di dipendenza già registrata.
Metodo pubblico AddOwner(Type, PropertyMetadata) Aggiunge un altro tipo come proprietario di una proprietà di dipendenza già registrata, fornendo i metadati per la proprietà di dipendenza esistente sul tipo di proprietario specificato.
Metodo pubblico Equals(Object) Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object)
Metodo protetto Finalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblico GetHashCode Restituisce un codice hash per questo oggetto DependencyProperty. (Esegue l'override di Object.GetHashCode()).
Metodo pubblico GetMetadata(DependencyObject) Restituisce i metadati per questa proprietà di dipendenza sull'istanza dell'oggetto specificato.
Metodo pubblico GetMetadata(DependencyObjectType) Restituisce i metadati per questa proprietà di dipendenza su un tipo specificato.
Metodo pubblico GetMetadata(Type) Restituisce i metadati per questa proprietà di dipendenza su un tipo esistente specificato.
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblico IsValidType Determina se un valore specificato è accettabile per questo tipo di proprietà di dipendenza, come controllato per il tipo di proprietà fornito nella registrazione originale della proprietà di dipendenza.
Metodo pubblico IsValidValue Determina se il valore fornito è accettato per il tipo di proprietà tramite il controllo del tipo di base e anche, potenzialmente, se è all'interno dell'intervallo consentito dei valori per quel tipo.
Metodo protetto MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico OverrideMetadata(Type, PropertyMetadata) Specifica i metadati alternativi per questa proprietà di dipendenza quando è presente su istanze di un tipo specificato, eseguendo l'override dei metadati esistenti per la proprietà di dipendenza come sono stati ereditati dai tipi di base.
Metodo pubblico OverrideMetadata(Type, PropertyMetadata, DependencyPropertyKey) Fornisce i metadati alternativi per una proprietà di dipendenza di sola lettura quando è presente su istanze di un tipo specificato, eseguendo l'override dei metadati forniti nella registrazione della proprietà di dipendenza iniziale. È necessario passare DependencyPropertyKey affinché la proprietà di dipendenza di sola lettura eviti di generare un'eccezione.
Metodo pubblico Membro statico Register(String, Type, Type) Registra una proprietà di dipendenza con il nome della proprietà, il tipo della proprietà e il tipo del proprietario specificati.
Metodo pubblico Membro statico Register(String, Type, Type, PropertyMetadata) Registra una proprietà di dipendenza con il nome della proprietà, il tipo della proprietà, il tipo del proprietario e i metadati della proprietà specificati.
Metodo pubblico Membro statico Register(String, Type, Type, PropertyMetadata, ValidateValueCallback) Registra una proprietà di dipendenza con il nome della proprietà, il tipo della proprietà, il tipo del proprietario, i metadati della proprietà e un callback di convalida del valore per la proprietà specificati.
Metodo pubblico Membro statico RegisterAttached(String, Type, Type) Registra una proprietà associata con il nome della proprietà, il tipo della proprietà e il tipo del proprietario specificati.
Metodo pubblico Membro statico RegisterAttached(String, Type, Type, PropertyMetadata) Registra una proprietà associata con il nome della proprietà, il tipo della proprietà, il tipo del proprietario e i metadati della proprietà specificati.
Metodo pubblico Membro statico RegisterAttached(String, Type, Type, PropertyMetadata, ValidateValueCallback) Registra una proprietà associata con il tipo della proprietà, il tipo del proprietario, i metadati della proprietà e un callback di convalida del valore per la proprietà specificati.
Metodo pubblico Membro statico RegisterAttachedReadOnly(String, Type, Type, PropertyMetadata) Registra una proprietà associata di sola lettura, con il tipo della proprietà, il tipo del proprietario e i metadati della proprietà specificati.
Metodo pubblico Membro statico RegisterAttachedReadOnly(String, Type, Type, PropertyMetadata, ValidateValueCallback) Registra una proprietà associata di sola lettura con il tipo della proprietà, il tipo del proprietario, i metadati della proprietà e un callback di convalida specificati.
Metodo pubblico Membro statico RegisterReadOnly(String, Type, Type, PropertyMetadata) Registra una proprietà di dipendenza di sola lettura, con il tipo della proprietà, il tipo del proprietario e i metadati della proprietà specificati.
Metodo pubblico Membro statico RegisterReadOnly(String, Type, Type, PropertyMetadata, ValidateValueCallback) Registra una proprietà di dipendenza di sola lettura con il tipo della proprietà, il tipo del proprietario, i metadati della proprietà e un callback di convalida specificati.
Metodo pubblico ToString Restituisce la rappresentazione di stringa della proprietà di dipendenza. (Esegue l'override di Object.ToString()).
In alto
Campi

  Nome Descrizione
Campo pubblico Membro statico UnsetValue Specifica un valore statico utilizzato dal sistema della proprietà WPF piuttosto che null per indicare che la proprietà esiste, ma non ha il valore impostato dal sistema della proprietà.
In alto
Note

Un oggetto DependencyProperty supporta le funzionalità seguenti in Windows Presentation Foundation (WPF):

  • La proprietà può essere impostata in uno stile. Per ulteriori informazioni, vedere Styling and Templating.

  • La proprietà può essere impostata attraverso l'associazione di dati. Per le ulteriori informazioni sulle proprietà di dipendenza con associazione dati, vedere How to: Bind the Properties of Two Controls.

  • La proprietà può essere impostata mediante un riferimento a una risorsa dinamica. Per ulteriori informazioni, vedere Resources Overview.

  • La proprietà può ereditare il suo valore automaticamente da un elemento padre nella struttura ad albero dell'elemento. Per ulteriori informazioni, vedere Property Value Inheritance.

  • La proprietà può essere animata. Per ulteriori informazioni, vedere Animation Overview.

  • La proprietà può creare un rapporto quando il valore precedente della proprietà è stato modificato e il valore della proprietà può essere assegnato. Per ulteriori informazioni, vedere Dependency Property Callbacks and Validation.

  • La proprietà riporta informazioni a WPF, ad esempio segnala se la modifica di un valore di proprietà richiede che il sistema di layout ricomponga gli elementi visivi di un elemento.

  • La proprietà riceve supporto in WPF Designer per Visual Studio. Ad esempio, la proprietà può essere modificata nella finestra Proprietà.

Per ulteriori informazioni sulle proprietà di dipendenza, vedere Dependency Properties Overview. Se si desidera che le proprietà sui tipi personalizzati supportino le funzionalità dell'elenco precedente, è necessario creare una proprietà di dipendenza. Per informazioni su come creare le proprietà di dipendenza personalizzate, vedere Custom Dependency Properties.

Una proprietà associata consente a qualsiasi oggetto di fornire informazioni sul tipo che definisce la proprietà stessa. In WPF qualsiasi tipo che eredita da DependencyObject può utilizzare una proprietà associata indipendentemente dal fatto che il tipo erediti o meno dal tipo che definisce la proprietà. Una proprietà associata è una funzionalità del linguaggio XAML. Per impostare una proprietà associata in XAML, utilizzare la sintassi ownerType.propertyName. Un esempio di proprietà associata è la proprietà DockPanel.Dock. Se si desidera creare una proprietà che può essere utilizzata su tutti i tipi DependencyObject, è necessario definire una proprietà associata. Per ulteriori informazioni sulle proprietà associate e su come crearle, vedere Attached Properties Overview.

Esempi

This example shows how to back a common language runtime (CLR) property with a DependencyProperty field, thus defining a dependency property. When you define your own properties and want them to support many aspects of Windows Presentation Foundation (WPF) functionality, including styles, data binding, inheritance, animation, and default values, you should implement them as a dependency property.

The following example first registers a dependency property by calling the Register method. The name of the identifier field that you use to store the name and characteristics of the dependency property must be the Name you chose for the dependency property as part of the Register call, appended by the literal string Property. For instance, if you register a dependency property with a Name of Location, then the identifier field that you define for the dependency property must be named LocationProperty.

In this example, the name of the dependency property and its CLR accessor is State; the identifier field is StateProperty; the type of the property is Boolean; and the type that registers the dependency property is MyStateControl.

If you fail to follow this naming pattern, designers might not report your property correctly, and certain aspects of property system style application might not behave as expected.

You can also specify default metadata for a dependency property. This example registers the default value of the State dependency property to be false.

Visual Basic

  Public Class MyStateControl
	  Inherits ButtonBase
	Public Sub New()
		MyBase.New()
	End Sub
	Public Property State() As Boolean
	  Get
		  Return CType(Me.GetValue(StateProperty), Boolean)
	  End Get
	  Set(ByVal value As Boolean)
		  Me.SetValue(StateProperty, value)
	  End Set
	End Property
	Public Shared ReadOnly StateProperty As DependencyProperty = DependencyProperty.Register("State", GetType(Boolean), GetType(MyStateControl),New PropertyMetadata(False))
  End Class


C#

public class MyStateControl : ButtonBase
{
  public MyStateControl() : base() { }
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); } 
  }
  public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
    "State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}


For more information about how and why to implement a dependency property, as opposed to just backing a CLR property with a private field, see Dependency Properties Overview.

Informazioni sulla versione

.NET Framework

Supportato in: 4, 3.5, 3.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1
Piattaforme

Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Vedere anche

Riferimenti

Altre risorse