Dołączone właściwości
Dołączone właściwości interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI) umożliwiają obiektowi przypisanie wartości dla właściwości, która nie definiuje własnej klasy. 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. Układ Grid umożliwia określenie wiersza i kolumny elementu podrzędnego 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 Powiązane właściwości.
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 jednym
CreateAttached
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 BindableObjectklasy . Jednak właściwość docelowa dla metod dostępu powinna mieć wartość lub pochodzić z klasy BindableObject. Aby uzyskać więcej informacji na temat właściwości docelowych, zobacz Podstawowe powiązania.
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 class MyControl
{
public static readonly BindableProperty HasShadowProperty =
BindableProperty.CreateAttached("HasShadow", typeof(bool), typeof(MyControl), false);
}
Spowoduje to utworzenie dołączonej właściwości o nazwie HasShadowProperty
, typu bool
. Właściwość jest własnością MyControl
klasy i ma wartość false
domyślną . W tym przypadku własność oznacza, że dostęp do właściwości będzie uzyskiwany w języku XAML przy użyciu formatu Type.Property
, na przykład MyControl.HasShadow
.
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 BindableObjectklasy . Aby uzyskać więcej informacji na temat obiektów docelowych, zobacz Podstawowe powiązania.
Poniższy przykład kodu przedstawia metody dostępu dla dołączonej HasShadow
właściwości:
public class MyControl
{
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.
W poniższym przykładzie pokazano 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:ShadowDemo" ...>
...
</ContentPage>
Deklaracja przestrzeni nazw jest następnie używana podczas ustawiania dołączonej właściwości w określonej kontrolce, jak pokazano w poniższym kodzie XAML:
<Label Text="Label with shadow" local:MyControl.HasShadow="true" />
Równoważny kod języka C# jest pokazany w poniższym przykładzie kodu:
Label label = new Label { Text = "Label with shadow" };
MyControl.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 kontrolek Label korzystających z dołączonej HasShadow
właściwości:
<Style x:Key="ShadowStyle" TargetType="Label">
<Style.Setters>
<Setter Property="local:MyControl.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 with shadow" Style="{StaticResource ShadowStyle}" />
Aby uzyskać więcej informacji na temat stylów, zobacz Style.
Zaawansowane scenariusze
Podczas tworzenia dołączonej właściwości istnieje kilka 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.