Questa documentazione è stata archiviata e non viene gestita.

Metodo DependencyObject.SetValue (DependencyProperty, Object)

Aggiornamento: novembre 2007

Imposta il valore locale di una proprietà di dipendenza, specificata dal relativo identificatore.

Spazio dei nomi:  System.Windows
Assembly:  WindowsBase (in WindowsBase.dll)

public void SetValue(
	DependencyProperty dp,
	Object value
)
public void SetValue(
	DependencyProperty dp,
	Object value
)
public function SetValue(
	dp : DependencyProperty, 
	value : Object
)
Non è possibile utilizzare metodi in XAML.

Parametri

dp
Tipo: System.Windows.DependencyProperty

Identificatore della proprietà di dipendenza da impostare.

value
Tipo: System.Object

Nuovo valore locale.

EccezioneCondizione
InvalidOperationException

È stato effettuato un tentativo di modificare una proprietà di dipendenza di sola lettura o una proprietà in un oggetto DependencyObject sealed.

ArgumentException

value non è il tipo corretto registrato per la proprietà dp.

Se il tipo specificato non corrisponde al tipo dichiarato per la proprietà di dipendenza registrata in origine, viene generata un'eccezione. È necessario specificare sempre il parametro value come tipo appropriato.

Le condizioni dell'eccezione sono potenzialmente influenzate dal callback ValidateValueCallback esistente nell'identificatore della proprietà di dipendenza impostata. In caso contrario il valore fornito potrebbe non essere all'altezza delle condizioni generali di controllo del tipo (ad esempio passare una stringa quando il tipo nativo è Double).

In questo esempio viene mostrato come supportare una proprietà Common Language Runtime (CLR) con un campo DependencyProperty, definendo una proprietà di dipendenza. Quando si definiscono proprietà personalizzate e si desidera che queste supportino molti aspetti della funzionalità Windows Presentation Foundation (WPF), inclusi stili, associazione dati, ereditarietà, animazione e valori predefiniti, è necessario implementarle come proprietà di dipendenza.

Nell'esempio seguente viene innanzitutto registrata una proprietà di dipendenza chiamando il metodo Register. Il nome del campo dell'identificatore utilizzato per memorizzare il nome e le caratteristiche della proprietà di dipendenza deve essere l'oggetto Name scelto per la proprietà di dipendenza come parte della chiamata Register, aggiunta dalla stringa letterale Property. Ad esempio, se si registra una proprietà di dipendenza con una proprietà Name di Location, il campo dell'identificatore definito per la proprietà di dipendenza deve essere denominato LocationProperty.

In questo esempio, il nome della proprietà di dipendenza e la relativa funzione di accesso CLR è State; il campo dell'identificatore è StateProperty; il tipo della proprietà è Boolean e il tipo che registra la proprietà di dipendenza è MyStateControl.

Se non si riesce a seguire questo modello di denominazione, la proprietà potrebbe non essere segnalata correttamente nelle finestre di progettazione e alcuni aspetti dell'applicazione di stili del sistema di proprietà potrebbero non funzionare nel modo previsto.

Inoltre, è possibile specificare i metadati predefiniti per una proprietà di dipendenza. In questo esempio viene registrato il valore predefinito della State proprietà di dipendenza affinché sia false.

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));
}


Per l'esempio completo, vedere Esempio di classi personalizzate con proprietà di dipendenza.

Per ulteriori informazioni sulla modalità e sui motivi dell'implementazione di una proprietà di dipendenza, in contrapposizione al semplice supporto di una proprietà CLR con un campo privato, vedere Cenni preliminari sulle proprietà di dipendenza.

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0
Mostra: