Procedura: Registrare una proprietà associataHow to: Register an Attached Property

Questo esempio mostra come registrare una proprietà associata e fornire funzioni di accesso pubbliche, in modo da poter usare la proprietà sia in Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) che nel codice.This example shows how to register an attached property and provide public accessors so that you can use the property in both Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) and code. Le proprietà associate rappresentano un concetto della sintassi definito da Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML).Attached properties are a syntax concept defined by Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML). La maggior parte delle proprietà associate per i tipi WPFWPF viene anche implementata come proprietà di dipendenza.Most attached properties for WPFWPF types are also implemented as dependency properties. È possibile usare le proprietà di dipendenza in qualsiasi DependencyObject tipi.You can use dependency properties on any DependencyObject types.

EsempioExample

Nell'esempio seguente viene illustrato come registrare una proprietà associata come proprietà di dipendenza, usando il RegisterAttached (metodo).The following example shows how to register an attached property as a dependency property, by using the RegisterAttached method. La classe del provider può fornire metadati predefiniti per la proprietà applicabile quando la proprietà viene usata in un'altra classe, a meno che tale classe non esegua l'override dei metadati.The provider class has the option of providing default metadata for the property that is applicable when the property is used on another class, unless that class overrides the metadata. In questo esempio il valore predefinito della proprietà IsBubbleSource viene impostato su false.In this example, the default value of the IsBubbleSource property is set to false.

La classe del provider per una proprietà associata (anche se non è registrata come proprietà di dipendenza) deve fornire funzioni di accesso get e set statiche basate sulla convenzione di denominazione Set[NomeProprietàAssociata] e Get[NomeProprietàAssociata].The provider class for an attached property (even if it is not registered as a dependency property) must provide static get and set accessors that follow the naming convention Set[AttachedPropertyName] and Get[AttachedPropertyName]. Queste funzioni di accesso sono necessarie per consentire al lettore XAMLXAML in funzione di riconoscere la proprietà come attributo in XAMLXAML e risolvere i tipi appropriati.These accessors are required so that the acting XAMLXAML reader can recognize the property as an attribute in XAMLXAML and resolve the appropriate types.

public static readonly DependencyProperty IsBubbleSourceProperty = DependencyProperty.RegisterAttached(
  "IsBubbleSource",
  typeof(Boolean),
  typeof(AquariumObject),
  new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)
);
public static void SetIsBubbleSource(UIElement element, Boolean value)
{
  element.SetValue(IsBubbleSourceProperty, value);
}
public static Boolean GetIsBubbleSource(UIElement element)
{
  return (Boolean)element.GetValue(IsBubbleSourceProperty);
}
Public Shared ReadOnly IsBubbleSourceProperty As DependencyProperty = DependencyProperty.RegisterAttached("IsBubbleSource", GetType(Boolean), GetType(AquariumObject), New FrameworkPropertyMetadata(False, FrameworkPropertyMetadataOptions.AffectsRender))
Public Shared Sub SetIsBubbleSource(ByVal element As UIElement, ByVal value As Boolean)
    element.SetValue(IsBubbleSourceProperty, value)
End Sub
Public Shared Function GetIsBubbleSource(ByVal element As UIElement) As Boolean
    Return CType(element.GetValue(IsBubbleSourceProperty), Boolean)
End Function

Vedere ancheSee also