Ekli özellikler
.NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) ekli özellikleri, bir nesnenin kendi sınıfının tanımlamadığı bir özellik için değer atamasına olanak tanır. Örneğin, alt öğeler, üst öğelerini kullanıcı arabiriminde nasıl sunulacakları konusunda bilgilendirmek için ekli özellikleri kullanabilir. Düzen, Grid ve ekli özelliklerini ayarlayarak bir alt öğeye ait satır ve Grid.Column
sütunun belirtilmesine Grid.Row
olanak tanır. Grid.Row
ve Grid.Column
ekli özelliklerdir çünkü bunlar kendisinde değil, öğesinin Gridalt öğelerinde Grid ayarlanır.
Bağlanabilir özellikler aşağıdaki senaryolarda ekli özellikler olarak uygulanmalıdır:
- Tanımlama sınıfı dışındaki sınıflar için kullanılabilir bir özellik ayarı mekanizması olması gerektiğinde.
- Sınıfı, diğer sınıflarla kolayca tümleştirilmesi gereken bir hizmeti temsil ettiğinde.
Bağlanabilir özellikler hakkında daha fazla bilgi için bkz . Bağlanabilir özellikler.
Ekli özellik oluşturma
Ekli özellik oluşturma işlemi aşağıdaki gibidir:
- Yöntem aşırı yüklemelerinden
CreateAttached
biriyle bir BindableProperty örnek oluşturun. - Ekli özellik için erişimci olarak PropertyName ve PropertyName yöntemlerini sağlayın
Get
static
.Set
Özellik oluşturma
Diğer türlerde kullanılmak üzere ekli özellik oluştururken, özelliğin oluşturulduğu sınıfın öğesinden BindableObjecttüretmesi gerekmez. Bununla birlikte , erişimcilerin hedef özelliği veya türetilmesi BindableObjectgerekir. Hedef özellikler hakkında daha fazla bilgi için bkz . Temel bağlamalar.
Ekli özellik türündeki BindablePropertybir public static readonly
özellik bildirilerek oluşturulabilir. Bağlanabilir özellik, yöntem aşırı yüklemelerinden BindableProperty.CreateAttached
birinin döndürülen değerine ayarlanmalıdır. Bildirimi, sahip olan sınıfın gövdesinde, ancak üye tanımlarının dışında olmalıdır.
Önemli
Ekli özelliklerin adlandırma kuralı, ekli özellik tanımlayıcısının yönteminde CreateAttached
belirtilen özellik adıyla eşleşmesi ve sonuna "Özellik" eklenmesi gerektiğidir.
Aşağıdaki kod ekli bir özelliğin örneğini gösterir:
public class MyControl
{
public static readonly BindableProperty HasShadowProperty =
BindableProperty.CreateAttached("HasShadow", typeof(bool), typeof(MyControl), false);
}
Bu, türünde bool
adlı HasShadowProperty
ekli bir özellik oluşturur. özelliği sınıfına MyControl
aittir ve varsayılan değerine false
sahiptir. Bu durumda sahiplik, özelliğine XAML'de örneğin biçimini Type.Property
MyControl.HasShadow
kullanarak erişileceği anlamına gelir.
Oluşturma sırasında belirtilebilen parametreler de dahil olmak üzere bağlanabilir özellikler oluşturma hakkında daha fazla bilgi için bkz . Bağlanabilir özellik oluşturma.
Erişimci oluşturma
Static Get
PropertyName ve Set
PropertyName yöntemleri ekli özellik için erişimci olarak gereklidir, aksi takdirde özellik sistemi ekli özelliği kullanamaz. Get
PropertyName erişimcisi aşağıdaki imzaya uygun olmalıdır:
public static valueType GetPropertyName(BindableObject target)
Get
PropertyName erişimcisi, ekli özelliğin karşılık gelen BindableProperty alanında bulunan değeri döndürmelidir. Bu, yöntemini çağırarak GetValue
, değerin alınacağı bağlanabilir özellik tanımlayıcısını geçirerek ve ardından sonuçta elde edilen değeri gerekli türe dönüştürerek gerçekleştirilebilir.
Set
PropertyName erişimcisi aşağıdaki imzaya uygun olmalıdır:
public static void SetPropertyName(BindableObject target, valueType value)
Set
PropertyName erişimcisi, ekli özellik için karşılık gelen BindableProperty alanın değerini ayarlamalıdır. Bu, yöntemi çağrılarak SetValue
, değerin ayarlanacağı bağlanabilir özellik tanımlayıcısı ve ayarlanacak değer geçirilerek gerçekleştirilebilir.
Her iki erişimci için de hedef nesnenin öğesi olması veya öğesinden BindableObjecttüretilmesi gerekir. Hedef nesneler hakkında daha fazla bilgi için bkz . Temel bağlamalar.
Aşağıdaki kod örneği, ekli özelliğin HasShadow
erişimcilerini gösterir:
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);
}
}
Ekli özelliği kullanma
Ekli bir özellik oluşturulduktan sonra XAML veya koddan kullanılabilir. XAML'de bu, ortak dil çalışma zamanı (CLR) ad alanı adını ve isteğe bağlı olarak bir derleme adını belirten ad alanı bildirimiyle ön ekli bir ad alanı bildirilerek elde edilir. Daha fazla bilgi için bkz . XAML Ad Alanları.
Aşağıdaki örnekte, özel türe başvuran uygulama koduyla aynı derleme içinde tanımlanan ekli bir özellik içeren özel tür için bir XAML ad alanı gösterilmektedir:
<ContentPage ... xmlns:local="clr-namespace:ShadowDemo" ...>
...
</ContentPage>
Ad alanı bildirimi, aşağıdaki XAML'de gösterildiği gibi belirli bir denetimde ekli özelliği ayarlarken kullanılır:
<Label Text="Label with shadow" local:MyControl.HasShadow="true" />
Eşdeğer C# kodu aşağıdaki kod örneğinde gösterilmiştir:
Label label = new Label { Text = "Label with shadow" };
MyControl.SetHasShadow (label, true);
Ekli özelliği stille kullanma
Ekli özellikler, bir stile göre denetime de eklenebilir. Aşağıdaki XAML kodu örneği, ekli özelliği kullanan HasShadow
denetimler için Label açık bir stil gösterir:
<Style x:Key="ShadowStyle" TargetType="Label">
<Style.Setters>
<Setter Property="local:MyControl.HasShadow" Value="true" />
</Style.Setters>
</Style>
, Style aşağıdaki kod örneğinde gösterildiği gibi işaretleme uzantısını kullanarak StaticResource
özelliğini Style örneğe ayarlayarak Style öğesine uygulanabilirLabel:
<Label Text="Label with shadow" Style="{StaticResource ShadowStyle}" />
Stiller hakkında daha fazla bilgi için bkz . Stiller.
Gelişmiş senaryolar
Ekli özellik oluştururken, gelişmiş ekli özellik senaryolarını etkinleştirmek için ayarlanabilen bazı isteğe bağlı parametreler vardır. Bu özellik değişikliklerini algılamayı, özellik değerlerini doğrulamayı ve özellik değerlerini zorlamayı içerir. Daha fazla bilgi için bkz . Gelişmiş senaryolar.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin