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 Grid
elementu , 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:
BindableProperty
Utwórz wystąpienie z jednymCreateAttached
z przeciążeń metody.- Podaj
static
Get
metody PropertyName iSet
PropertyName 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 BindableObject
klasy . 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ść false
domyś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 Get
PropertyName i Set
PropertyName 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 Get
PropertyName powinno być zgodne z następującym podpisem:
public static valueType GetPropertyName(BindableObject target)
Akcesorium Get
PropertyName 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 Set
PropertyName powinno być zgodne z następującym podpisem:
public static void SetPropertyName(BindableObject target, valueType value)
Metodę Set
dostę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 BindableObject
klasy .
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.