Właściwości dołączone

Dołączone właściwości umożliwiają obiektowi przypisanie wartości dla właściwości, która jej własna klasa nie definiuje. Na przykład elementy podrzędne mogą używać dołączonych właściwości, aby poinformować ich element nadrzędny o tym, jak mają być prezentowane w interfejsie użytkownika. Kontrolka Grid umożliwia określenie wiersza i kolumny podrzędnej przez ustawienie Grid.Row właściwości i Grid.Column dołączonych. Grid.Row i Grid.Column są dołączone właściwości, ponieważ są one ustawione na elementach podrzędnych Gridelementu , a nie na Grid samym.

Właściwości możliwe do powiązania należy zaimplementować jako dołączone właściwości w następujących scenariuszach:

  • Jeśli istnieje potrzeba, aby mechanizm ustawiania właściwości był dostępny dla klas innych niż klasa definiująca.
  • Gdy klasa reprezentuje usługę, która musi być łatwo zintegrowana z innymi klasami.

Aby uzyskać więcej informacji na temat właściwości możliwych do powiązania, zobacz Właściwości możliwe do powiązania.

Tworzenie dołączonej właściwości

Proces tworzenia dołączonej właściwości jest następujący:

  1. BindableProperty Utwórz wystąpienie z jednym CreateAttached z przeciążeń metody.
  2. Podaj staticGetmetody PropertyName i SetPropertyName jako metody dostępu dla dołączonej właściwości.

Tworzenie właściwości

Podczas tworzenia dołączonej właściwości do użycia w innych typach klasa, w której tworzona jest właściwość, nie musi pochodzić z BindableObjectklasy . Jednak właściwość docelowa dla metod dostępu powinna mieć wartość lub pochodzić z klasy BindableObject.

Dołączoną właściwość można utworzyć, deklarując public static readonly właściwość typu BindableProperty. Właściwość powiązana powinna być ustawiona na zwracaną wartość jednego z BindableProperty.CreateAttached przeciążeń metody. Deklaracja powinna znajdować się w treści klasy należącej do klasy, ale poza definicjami składowymi.

Ważne

Konwencja nazewnictwa dołączonych właściwości polega na tym, że dołączony identyfikator właściwości musi być zgodny z nazwą właściwości określoną w CreateAttached metodzie, z dołączonym ciągiem "Property".

Poniższy kod przedstawia przykład dołączonej właściwości:

public static readonly BindableProperty HasShadowProperty =
  BindableProperty.CreateAttached ("HasShadow", typeof(bool), typeof(ShadowEffect), false);

Spowoduje to utworzenie dołączonej właściwości o nazwie HasShadowProperty, typu bool. Właściwość jest własnością ShadowEffect klasy i ma wartość falsedomyślną .

Aby uzyskać więcej informacji na temat tworzenia właściwości możliwych do powiązania, w tym parametrów, które można określić podczas tworzenia, zobacz Tworzenie właściwości możliwej do powiązania.

Tworzenie metod dostępu

Metody Static GetPropertyName i SetPropertyName są wymagane jako metody dostępu dla dołączonej właściwości. W przeciwnym razie system właściwości nie będzie mógł użyć dołączonej właściwości. Akcesorium GetPropertyName powinno być zgodne z następującym podpisem:

public static valueType GetPropertyName(BindableObject target)

Akcesorium GetPropertyName powinno zwrócić wartość zawartą w odpowiednim BindableProperty polu dla dołączonej właściwości. Można to osiągnąć, wywołując metodę GetValue , przekazując identyfikator właściwości możliwej do powiązania, dla której ma zostać pobrana wartość, a następnie rzutując wynikową wartość na wymagany typ.

Akcesorium SetPropertyName powinno być zgodne z następującym podpisem:

public static void SetPropertyName(BindableObject target, valueType value)

Metodę Setdostępu PropertyName należy ustawić wartość odpowiedniego BindableProperty pola dla dołączonej właściwości. Można to osiągnąć, wywołując metodę SetValue , przekazując identyfikator właściwości możliwej do powiązania, dla której należy ustawić wartość, oraz wartość do ustawienia.

W przypadku obu metod dostępu obiekt docelowy powinien mieć wartość lub pochodzić z BindableObjectklasy .

Poniższy przykład kodu przedstawia metody dostępu dla dołączonej HasShadow właściwości:

public static bool GetHasShadow (BindableObject view)
{
  return (bool)view.GetValue (HasShadowProperty);
}

public static void SetHasShadow (BindableObject view, bool value)
{
  view.SetValue (HasShadowProperty, value);
}

Korzystanie z dołączonej właściwości

Po utworzeniu dołączonej właściwości można jej używać z kodu lub kodu XAML. W języku XAML jest to osiągane przez zadeklarowanie przestrzeni nazw z prefiksem z deklaracją przestrzeni nazw wskazującą nazwę przestrzeni nazw środowiska uruchomieniowego języka wspólnego (CLR) i opcjonalnie nazwę zestawu. Aby uzyskać więcej informacji, zobacz Przestrzenie nazw XAML.

Poniższy przykład kodu przedstawia przestrzeń nazw XAML dla typu niestandardowego zawierającego dołączoną właściwość, która jest zdefiniowana w tym samym zestawie co kod aplikacji odwołujący się do typu niestandardowego:

<ContentPage ... xmlns:local="clr-namespace:EffectsDemo" ...>
  ...
</ContentPage>

Deklaracja przestrzeni nazw jest następnie używana podczas ustawiania dołączonej właściwości dla określonej kontrolki, jak pokazano w poniższym przykładzie kodu XAML:

<Label Text="Label Shadow Effect" local:ShadowEffect.HasShadow="true" />

Równoważny kod języka C# jest pokazany w poniższym przykładzie kodu:

var label = new Label { Text = "Label Shadow Effect" };
ShadowEffect.SetHasShadow (label, true);

Korzystanie z dołączonej właściwości ze stylem

Dołączone właściwości można również dodać do kontrolki według stylu. Poniższy przykład kodu XAML przedstawia jawny styl, który używa dołączonej HasShadow właściwości, którą można zastosować do Label kontrolek:

<Style x:Key="ShadowEffectStyle" TargetType="Label">
  <Style.Setters>
    <Setter Property="local:ShadowEffect.HasShadow" Value="true" />
  </Style.Setters>
</Style>

Można Style go zastosować, Label ustawiając jego Style właściwość na Style wystąpienie przy użyciu StaticResource rozszerzenia znaczników, jak pokazano w poniższym przykładzie kodu:

<Label Text="Label Shadow Effect" Style="{StaticResource ShadowEffectStyle}" />

Aby uzyskać więcej informacji na temat stylów, zobacz Style.

Zaawansowane scenariusze

Podczas tworzenia dołączonej właściwości istnieje wiele opcjonalnych parametrów, które można ustawić w celu włączenia zaawansowanych scenariuszy dołączonych właściwości. Obejmuje to wykrywanie zmian właściwości, weryfikowanie wartości właściwości i wartości właściwości współtworzenia. Aby uzyskać więcej informacji, zobacz Scenariusze zaawansowane.