Davranış
Örneğe göz atın Örneğe göz atın
.NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) davranışları, denetimleri alt sınıfa almak zorunda kalmadan Button veya Entrygibi kullanıcı arabirimi denetimlerine ek işlevler eklemenize olanak tanır. Bunun yerine, ek işlevsellik bir Behavior sınıfında uygulanır ve denetime eklenir.
Davranışlar, kullanıcı arabirimi denetimlerine farklı işlevler eklemek için kullanılabilir; örneğin:
- Giriş doğrulamaları. Verilerin geçerli olduğundan emin olmak için giriş denetimleriyle davranışlar kullanılabilir. Örneğin, bir Entry için, bir telefon numarası veya e-posta adresinin doğru formatta olduğundan emin olmak amacıyla bir davranış yazabilirsiniz.
- Kullanıcı arabirimini geliştirme. Davranışlar, uygulamanızdaki kullanıcı arabirimi denetimlerini geliştirmek için kullanılabilir. Örneğin, bir Button'a tıklanıldığında sallanmasını sağlamak veya rengini değiştirmek için bir davranış yazabilirsiniz.
- Çalışma zamanı yanıtları. Davranışlar, denetimlerin farklı durumlara tepki vermelerini sağlamak için kullanılabilir. Örneğin, kullanıcı yazmayı bitirdiğinde kullanıcı girişi otomatik olarak Entry'a kaydedilebilir.
.NET MAUI üç farklı davranış türünü destekler:
- Ekli davranışlar, bir veya daha fazla ekli özelliğe sahip
static
sınıflardır. Ekli davranışlar hakkında daha fazla bilgi için bkz. Ekli davranışlar. - .NET MAUI davranışları, Behavior veya Behavior<T> sınıfından türetilen sınıflardır; burada
T
, davranışın uygulanacağı denetimin türüdür. Daha fazla bilgi için bkz. .NET MAUI Behaviors. - Platform davranışları, PlatformBehavior<TView> veya PlatformBehavior<TView,TPlatformView> sınıfından türetilen sınıflardır. Bu davranışlar, yerel denetimdeki rastgele koşullara ve olaylara yanıt verebilir. Daha fazla bilgi için bkz. Platform davranışları.
İlişkili davranışlar
Ekli davranışlar, bir veya daha fazla ekli özelliğe sahip statik sınıflardır. Ekli özellik, özel bir bağlanabilir özellik türüdür. Bunlar bir sınıfta tanımlanır, ancak diğer nesnelere eklenir ve XAML'de bir sınıf ve noktayla ayrılmış bir özellik adı içeren öznitelikler olarak tanınabilir. Ekli özellikler hakkında daha fazla bilgi için bkz. Ekli özellikler.
Ekli bir özellik, özelliğin değeri değiştiğinde yürütülecek bir propertyChanged
temsilcisi tanımlayabilir( örneğin, özellik bir denetimde ayarlandığında).
propertyChanged
temsilcisi çalıştığında, eklendiği kontrole ve özelliğin eski ve yeni değerlerini içeren parametrelere bir başvuru aktarılır. Bu temsilci, geçirilen başvuruyu aşağıdaki gibi düzenleyerek özelliğin eklendiği denetime yeni işlevler eklemek için kullanılabilir:
-
propertyChanged
delegesi, BindableObjectolarak alınan kontrol başvurusunu, davranışı geliştirmek için tasarlandığı kontrol türüne dönüştürür. -
propertyChanged
temsilcisi denetimin özelliklerini değiştirir, denetimin yöntemlerini çağırır veya denetim tarafından ortaya konan olaylar için olay işleyicilerini kaydederek temel davranış işlevselliğini uygular.
Uyarı
Ekli davranışlar, static
özellikleri ve yöntemleriyle static
sınıfında tanımlanır. Durum bilgisine sahip ekli davranışlar oluşturmayı zorlaştırır.
Bağlı davranış oluştur
Ekli davranış, propertyChanged
temsilcisini belirten ekli bir özellik içeren statik bir sınıf oluşturularak uygulanabilir.
Aşağıdaki örnek, AttachedNumericValidationBehavior
sınıfını gösterir. Bu sınıf, double
değilse kullanıcı tarafından kırmızı Entry denetimine girilen değeri vurgular:
public static class AttachedNumericValidationBehavior
{
public static readonly BindableProperty AttachBehaviorProperty =
BindableProperty.CreateAttached("AttachBehavior", typeof(bool), typeof(AttachedNumericValidationBehavior), false, propertyChanged: OnAttachBehaviorChanged);
public static bool GetAttachBehavior(BindableObject view)
{
return (bool)view.GetValue(AttachBehaviorProperty);
}
public static void SetAttachBehavior(BindableObject view, bool value)
{
view.SetValue(AttachBehaviorProperty, value);
}
static void OnAttachBehaviorChanged(BindableObject view, object oldValue, object newValue)
{
Entry entry = view as Entry;
if (entry == null)
{
return;
}
bool attachBehavior = (bool)newValue;
if (attachBehavior)
{
entry.TextChanged += OnEntryTextChanged;
}
else
{
entry.TextChanged -= OnEntryTextChanged;
}
}
static void OnEntryTextChanged(object sender, TextChangedEventArgs args)
{
double result;
bool isValid = double.TryParse(args.NewTextValue, out result);
((Entry)sender).TextColor = isValid ? Colors.Black : Colors.Red;
}
}
Bu örnekte, AttachedNumericValidationBehavior
sınıfı, eklendiği denetime davranışın eklenmesini veya kaldırılmasını denetleyen static
alıcı ve ayarlayıcı ile AttachBehavior
adlı bir ekli özellik içerir. Bu ekli özellik, özelliğin değeri değiştiğinde yürütülecek OnAttachBehaviorChanged
yöntemini kaydeder. Bu yöntem, ekli AttachBehavior
özelliğinin değerine göre TextChanged
olayı için bir olay işleyicisini kaydeder veya kaydını geri alır. Davranışın temel işlevselliği, Entry girilen değeri ayrıştıran ve değer double
değilse TextColor
özelliğini kırmızı olarak ayarlayan OnEntryTextChanged
yöntemi tarafından sağlanır.
Ekli davranışı kullan
Ekli bir davranış, hedef denetimde bağlı özellik ayarlanarak tüketilebilir.
Aşağıdaki örnek, Entryüzerine AttachBehavior
ekli özelliğini ekleyip AttachedNumericValidationBehavior
sınıfını bir Entry üzerinde nasıl kullanacağınızı gösterir:
<ContentPage ...
xmlns:local="clr-namespace:BehaviorsDemos">
<Entry Placeholder="Enter a System.Double" local:AttachedNumericValidationBehavior.AttachBehavior="true" />
</ContentPage>
C# dilinde eşdeğer Entry aşağıdaki kod örneğinde gösterilmiştir:
Entry entry = new Entry { Placeholder = "Enter a System.Double" };
AttachedNumericValidationBehavior.SetAttachBehavior(entry, true);
Aşağıdaki ekran görüntüsünde, geçersiz girişe yanıt veren ekli davranış gösterilmektedir:
Dikkat
Ekli davranışlar belirli bir denetim türü (veya birçok denetime uygulanabilen bir üst sınıf) için yazılır ve yalnızca uyumlu bir denetime eklenmelidir.
Ekli davranışı kaldırma
Denetimden AttachedNumericValidationBehavior
sınıfını kaldırmak için, AttachBehavior
iliştirilmiş özelliği false
olarak ayarlayabilirsiniz.
<Entry Placeholder="Enter a System.Double" local:AttachedNumericValidationBehavior.AttachBehavior="false" />
Çalışma zamanında, AttachBehavior
ekli özelliğinin değeri false
olarak ayarlandığında OnAttachBehaviorChanged
yöntemi yürütülür.
OnAttachBehaviorChanged
yöntemi daha sonra TextChanged
olayı için olay işleyicisinin kaydını kaldırarak denetimle etkileşim kurarken davranışın yürütülmediğine emin olur.
.NET MAUI davranışları
.NET MAUI davranışları, Behavior veya Behavior<T> sınıfından türetilerek oluşturulur.
.NET MAUI davranışı oluşturma işlemi aşağıdaki gibidir:
-
Behavior veya Behavior<T> sınıfından devralan bir sınıf oluşturun; burada
T
, davranışın uygulanacağı denetimin türüdür. - Gerekli ayarları gerçekleştirmek için OnAttachedTo yöntemini geçersiz kılın.
- Gerekli temizleme işlemlerini gerçekleştirmek için OnDetachingFrom yöntemini geçersiz kılın.
- Davranışın temel işlevselliğini uygulayın.
Bu, aşağıdaki örnekte gösterilen yapıya neden olur:
public class MyBehavior : Behavior<View>
{
protected override void OnAttachedTo(View bindable)
{
base.OnAttachedTo(bindable);
// Perform setup
}
protected override void OnDetachingFrom(View bindable)
{
base.OnDetachingFrom(bindable);
// Perform clean up
}
// Behavior implementation
}
OnAttachedTo yöntemi, davranış bir denetime eklendikten hemen sonra çağrılır. Bu yöntem, eklendiği denetime bir başvuru alır ve olay işleyicilerini kaydetmek veya davranış işlevselliğini desteklemek için gereken diğer kurulumu gerçekleştirmek için kullanılabilir. Örneğin, bir kontroldeki bir olaya abone olabilirsiniz. Daha sonra davranış işlevi, olay için olay işleyicisinde uygulanır.
davranış denetimden kaldırıldığında OnDetachingFrom yöntemi çağrılır. Bu yöntem, eklendiği denetime bir başvuru alır ve gerekli temizleme işlemlerini gerçekleştirmek için kullanılır. Örneğin, bellek sızıntılarını önlemek için denetimdeki bir olayın aboneliğini kaldırabilirsiniz.
Daha sonra davranış, denetimin Behaviors koleksiyonuna eklenerek kullanılabilir.
.NET MAUI Davranışı Oluşturma
.NET MAUI davranışı, Behavior veya Behavior<T> sınıfından türetilen bir sınıf oluşturulup OnAttachedTo ve OnDetachingFrom yöntemleri geçersiz kılınarak uygulanabilir.
Aşağıdaki örnek, NumericValidationBehavior
sınıfını gösterir. Bu sınıf, double
değilse kullanıcı tarafından kırmızı Entry denetimine girilen değeri vurgular:
public class NumericValidationBehavior : Behavior<Entry>
{
protected override void OnAttachedTo(Entry entry)
{
entry.TextChanged += OnEntryTextChanged;
base.OnAttachedTo(entry);
}
protected override void OnDetachingFrom(Entry entry)
{
entry.TextChanged -= OnEntryTextChanged;
base.OnDetachingFrom(entry);
}
void OnEntryTextChanged(object sender, TextChangedEventArgs args)
{
double result;
bool isValid = double.TryParse(args.NewTextValue, out result);
((Entry)sender).TextColor = isValid ? Colors.Black : Colors.Red;
}
}
Bu örnekte, NumericValidationBehavior
sınıfı Behavior<T> sınıfından türetilmiştir, burada T
bir Entry'tir.
OnAttachedTo yöntemi, bellek sızıntılarını önlemek için TextChanged
olayının kaydını kaldıran OnDetachingFrom yöntemiyle TextChanged
olay için bir olay işleyicisi kaydeder. Davranışın temel işlevselliği, Entry girilen değeri ayrıştıran ve değer double
değilse TextColor
özelliğini kırmızı olarak ayarlayan OnEntryTextChanged
yöntemi tarafından sağlanır.
Önemli
.NET MAUI bir davranışın BindingContext
ayarlamaz, çünkü davranışlar paylaşılabilir ve stiller aracılığıyla birden çok denetime uygulanabilir.
.NET MAUI davranışını kullanma
Her bir .NET MAUI denetimin, bir veya birden fazla davranışın eklenebileceği bir Behaviors koleksiyonuna sahiptir.
<Entry Placeholder="Enter a System.Double">
<Entry.Behaviors>
<local:NumericValidationBehavior />
</Entry.Behaviors>
</Entry>
C# dilinde eşdeğer Entry aşağıdaki kod örneğinde gösterilmiştir:
Entry entry = new Entry { Placeholder = "Enter a System.Double" };
entry.Behaviors.Add(new NumericValidationBehavior());
Aşağıdaki ekran görüntüsünde geçersiz girişe yanıt veren .NET MAUI davranışı gösterilmektedir:
Uyarı
.NET MAUI davranışları belirli bir denetim türü (veya birçok denetime uygulanabilen bir üst sınıf) için yazılır ve yalnızca uyumlu bir denetime eklenmelidir. Uyumsuz bir denetime .NET MAUI davranışı eklemeye çalışmak özel durum oluşturmayla sonuçlanır.
.NET MAUI davranışını bir stil ile kullanma
.NET MAUI davranışları açık veya örtük bir stil tarafından kullanılabilir. Ancak, özelliği salt okunur olduğundan denetimin Behaviors özelliğini ayarlayan bir stil oluşturmak mümkün değildir. Çözüm, davranışın eklenmesini ve kaldırılmasını denetleen davranış sınıfına ekli bir özellik eklemektir. İşlem aşağıdaki gibidir:
- Davranışın ekleneceği denetime eklenmesini veya kaldırılmasını denetlemek için kullanılacak davranış sınıfına ekli bir özellik ekleyin. İlişkilendirilmiş özelliğin değeri değiştiğinde çalışacak bir
propertyChanged
temsilcisinin kaydedildiğinden emin olun. - Ekli özellik için bir
static
alıcı ve ayarlayıcı oluşturun. - Davranışı eklemek ve kaldırmak için
propertyChanged
temsilcisine mantık uygulayın.
Aşağıdaki örnekte, davranışın eklenmesini ve kaldırılmasını denetleyen ekli bir özelliği olan NumericValidationStyleBehavior
sınıfı gösterilmektedir:
public class NumericValidationStyleBehavior : Behavior<Entry>
{
public static readonly BindableProperty AttachBehaviorProperty =
BindableProperty.CreateAttached("AttachBehavior", typeof(bool), typeof(NumericValidationStyleBehavior), false, propertyChanged: OnAttachBehaviorChanged);
public static bool GetAttachBehavior(BindableObject view)
{
return (bool)view.GetValue(AttachBehaviorProperty);
}
public static void SetAttachBehavior(BindableObject view, bool value)
{
view.SetValue(AttachBehaviorProperty, value);
}
static void OnAttachBehaviorChanged(BindableObject view, object oldValue, object newValue)
{
Entry entry = view as Entry;
if (entry == null)
{
return;
}
bool attachBehavior = (bool)newValue;
if (attachBehavior)
{
entry.Behaviors.Add(new NumericValidationStyleBehavior());
}
else
{
Behavior toRemove = entry.Behaviors.FirstOrDefault(b => b is NumericValidationStyleBehavior);
if (toRemove != null)
{
entry.Behaviors.Remove(toRemove);
}
}
}
protected override void OnAttachedTo(Entry entry)
{
entry.TextChanged += OnEntryTextChanged;
base.OnAttachedTo(entry);
}
protected override void OnDetachingFrom(Entry entry)
{
entry.TextChanged -= OnEntryTextChanged;
base.OnDetachingFrom(entry);
}
void OnEntryTextChanged(object sender, TextChangedEventArgs args)
{
double result;
bool isValid = double.TryParse(args.NewTextValue, out result);
((Entry)sender).TextColor = isValid ? Colors.Black : Colors.Red;
}
}
Bu örnekte, NumericValidationStyleBehavior
sınıfı, eklendiği denetime davranışın eklenmesini veya kaldırılmasını denetleyen static
alıcı ve ayarlayıcı ile AttachBehavior
adlı bir ekli özellik içerir. Bu ekli özellik, özelliğin değeri değiştiğinde yürütülecek OnAttachBehaviorChanged
yöntemini kaydeder. Bu yöntem, ekli AttachBehavior
özelliğinin değerine göre denetimin davranışını ekler veya kaldırır.
Aşağıdaki kod örneği, AttachBehavior
ekli özelliğini kullanan ve Entry denetimlere uygulanabilen, NumericValidationStyleBehavior
için açık bir stilini gösterir.
<Style x:Key="NumericValidationStyle" TargetType="Entry">
<Style.Setters>
<Setter Property="local:NumericValidationStyleBehavior.AttachBehavior" Value="true" />
</Style.Setters>
</Style>
Style, Style özelliğini StaticResource
işaretleme uzantısını kullanarak stili olarak ayarlamak suretiyle bir Entry'e uygulanabilir.
<Entry Placeholder="Enter a System.Double" Style="{StaticResource NumericValidationStyle}">
Stiller hakkında daha fazla bilgi için bkz. stiller
Not
XAML'de ayarlanmış veya sorgulanmış bir davranışa bağlanabilir özellikler ekleyebilirsiniz, ancak durum içeren davranışlar oluşturursanız, bunlar Style'deki denetimler arasında ResourceDictionarypaylaşılmamalıdır.
.NET MAUI davranışını kaldırma
OnDetachingFrom yöntemi, bir davranış denetimden kaldırıldığında çağrılır ve bellek sızıntısını önlemek için olaydan abonelikten kaldırma gibi gerekli temizleme işlemlerini gerçekleştirmek için kullanılır. Ancak, denetimin Behaviors koleksiyonu Remove
veya Clear
yöntemi tarafından değiştirilmediği sürece davranışlar denetimlerden örtük olarak kaldırılmaz:
Behavior toRemove = entry.Behaviors.FirstOrDefault(b => b is NumericValidationStyleBehavior);
if (toRemove != null)
{
entry.Behaviors.Remove(toRemove);
}
Alternatif olarak, denetimin Behaviors koleksiyonu temizlenebilir:
entry.Behaviors.Clear();
Not
Sayfalar gezinti yığınından çıkarıldığında .NET MAUI davranışları denetimlerden örtük olarak kaldırılmaz. Bunun yerine, sayfalar kapsam dışına çıkmadan önce açıkça kaldırılmalıdır.
Platform davranışları
Platform davranışları, PlatformBehavior<TView> veya PlatformBehavior<TView,TPlatformView> sınıfından türetilerek oluşturulur. Yerel denetimdeki rastgele koşullara ve olaylara yanıt verir.
Platform davranışı koşullu derleme veya kısmi sınıflar aracılığıyla uygulanabilir. Burada benimsenen yaklaşım, bir platform davranışının genellikle davranışLAR API'sini tanımlayan bir platformlar arası kısmi sınıftan ve davranışı her platformda uygulayan yerel bir kısmi sınıftan oluştuğu kısmi sınıfları kullanmaktır. Derleme zamanında çoklu hedefleme, her platformda platform işlevselliğini oluşturmak için kısmi sınıfları birleştirir.
Platform davranışı oluşturma işlemi aşağıdaki gibidir:
Platform davranışı için API'yi tanımlayan bir platformlar arası kısmi sınıf oluşturun.
Uygulamanızın oluşturulduğu her platformda, platformlar arası kısmi sınıfla aynı ada sahip yerel bir kısmi sınıf oluşturun. Bu yerel kısmi sınıf, PlatformBehavior<TView> veya PlatformBehavior<TView,TPlatformView> sınıfından devralmalıdır; burada
TView
davranışın uygulanması gereken platformlar arası denetimdir veTPlatformView
belirli bir platformda platformlar arası denetimi uygulayan yerel görünümdür.Not
Uygulamanızın oluşturulduğu her platformda yerel bir kısmi sınıf oluşturmak gerekli olsa da, platform davranışı işlevselliğini her platformda uygulamak gerekmez. Örneğin, bazı platformlarda yerel bir denetimin kenarlık kalınlığını değiştiren bir davranış oluşturabilirsiniz, ancak bu değişiklik tüm platformlarda geçerli olmayabilir.
Platform davranışını uygulamak için gereken her yerel kısmi sınıfta şunları yapmalısınız:
- Herhangi bir kurulumu gerçekleştirmek için OnAttachedTo yöntemini geçersiz kılın.
- Herhangi bir temizleme gerçekleştirmek için OnDetachedFrom yöntemini geçersiz kılın.
- Platform davranışının temel işlevselliğini uygulayın.
Daha sonra davranış, denetimin Behaviors koleksiyonuna eklenerek tüketilebilir.
Platform davranışı oluşturma
Platform davranışı oluşturmak için önce platform davranışı için API'yi tanımlayan bir platformlar arası kısmi sınıf oluşturmanız gerekir:
namespace BehaviorsDemos
{
public partial class TintColorBehavior
{
public static readonly BindableProperty TintColorProperty =
BindableProperty.Create(nameof(TintColor), typeof(Color), typeof(TintColorBehavior));
public Color TintColor
{
get => (Color)GetValue(TintColorProperty);
set => SetValue(TintColorProperty, value);
}
}
}
Platform davranışı, uygulaması aynı adı kullanan ek bir kısmi sınıfla gerekli her platformda tamamlanacak olan kısmi bir sınıftır. Bu örnekte, TintColorBehavior
sınıfı bir görüntüye belirtilen renkle renk kazandıracak TintColor
tek bir bağlanabilir özellik tanımlar.
Platformlar arası kısmi sınıfı oluşturduktan sonra, uygulamayı oluşturduğunuz her platformda yerel bir kısmi sınıf oluşturmanız gerekir. Bu, Platformları klasörünün gerekli alt klasörlerine kısmi sınıflar ekleyerek gerçekleştirilebilir:
Alternatif olarak projenizi dosya adı tabanlı çoklu hedeflemeyi veya klasör tabanlı çoklu hedeflemeyi ya da her ikisini de destekleyecek şekilde yapılandırabilirsiniz. Çoklu hedefleme hakkında daha fazla bilgi için bkz. Çoklu hedeflemeyapılandırma .
Yerel kısmi sınıflar PlatformBehavior<TView> sınıfından veya PlatformBehavior<TView,TPlatformView> sınıfından devralmalıdır; burada TView
davranışın geçerli olması gereken platformlar arası denetimdir ve TPlatformView
belirli bir platformda platformlar arası denetimi uygulayan yerel görünümdür. Platform davranışını uygulamak için gereken her yerel kısmi sınıfta, OnAttachedTo yöntemini ve OnDetachedFrom yöntemini geçersiz kılmanız ve platform davranışının temel işlevselliğini uygulamanız gerekir.
OnAttachedTo yöntemi, platform davranışı platformlar arası denetime eklendikten hemen sonra çağrılır. Yöntem, bağlı olduğu platformlar arası kontrol için bir başvuru alır ve isteğe bağlı olarak, platformlar arası kontrolü uygulayan yerel kontrol için bir başvuru alır. yöntemi, olay işleyicilerini kaydetmek veya platform davranışı işlevselliğini desteklemek için gereken diğer ayarları gerçekleştirmek için kullanılabilir. Örneğin, bir denetimdeki bir olaya abone olabilirsiniz. Daha sonra davranış işlevi, olay için olay işleyicisinde uygulanır.
OnDetachedFrom yöntemi, davranış platformlar arası denetimden kaldırıldığında çağrılır. Yöntem, eklendiği denetime bir referans ve isteğe bağlı olarak platformlar arası denetimi uygulayan yerel denetime bir referans alır. yöntemi, gerekli temizleme işlemlerini gerçekleştirmek için kullanılmalıdır. Örneğin, bellek sızıntılarını önlemek için denetimdeki bir olayın aboneliğini kaldırabilirsiniz.
Önemli
Kısmi sınıfların aynı ad alanında bulunması ve aynı adları kullanması gerekir.
Aşağıdaki örnekte, bir görüntüyü belirtilen renkle renklendiren Android için kısmi TintColorBehavior
sınıfı gösterilmektedir:
using Android.Graphics;
using Android.Widget;
using Microsoft.Maui.Platform;
using Color = Microsoft.Maui.Graphics.Color;
namespace BehaviorsDemos
{
public partial class TintColorBehavior : PlatformBehavior<Image, ImageView>
{
protected override void OnAttachedTo(Image bindable, ImageView platformView)
{
base.OnAttachedTo(bindable, platformView);
if (bindable is null)
return;
if (TintColor is null)
ClearColor(platformView);
else
ApplyColor(platformView, TintColor);
}
protected override void OnDetachedFrom(Image bindable, ImageView platformView)
{
base.OnDetachedFrom(bindable, platformView);
if (bindable is null)
return;
ClearColor(platformView);
}
void ApplyColor(ImageView imageView, Color color)
{
imageView.SetColorFilter(new PorterDuffColorFilter(color.ToPlatform(), PorterDuff.Mode.SrcIn ?? throw new NullReferenceException()));
}
void ClearColor(ImageView imageView)
{
imageView.ClearColorFilter();
}
}
}
Bu örnekte, TintColorBehavior
sınıfı PlatformBehavior<TView,TPlatformView> sınıfından türetilir. Burada TView
bir Image ve TPlatformView
ImageView.
OnAttachedTo, TintColor
özelliğinin bir değeri olması koşuluyla görüntüye renk tonu rengini uygular.
OnDetachedFrom yöntemi görüntüden renk tonunu kaldırır.
Uygulamanızı oluşturduğunuz her platforma yerel bir kısmi sınıf eklenmelidir. Ancak, belirli bir platformda platform davranışı gerekli değilse yerel kısmi sınıf NO-OP yapabilirsiniz. Bu, boş bir sınıf sağlayarak elde edilebilir:
using Microsoft.UI.Xaml;
namespace BehaviorsDemos
{
public partial class TintColorBehavior : PlatformBehavior<Image, FrameworkElement>
{
// NO-OP on Windows
}
}
Önemli
.NET MAUI, bir platform davranışının BindingContext
'ını ayarlamaz.
Platform davranışını kullanma
Her .NET MAUI denetiminin bir veya daha fazla platform davranışının eklenebileceği bir Behaviors koleksiyonu vardır:
<Image Source="dotnet_bot.png"
HeightRequest="200"
HorizontalOptions="Center">
<Image.Behaviors>
<local:TintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
C# dilinde eşdeğer Image aşağıdaki örnekte gösterilmiştir:
Image image = new Image { Source = "dotnet_bot.png", HeightRequest = 200, HorizontalOptions = LayoutOptions.Center };
image.Behaviors.Add(new TintColorBehavior());
Aşağıdaki ekran görüntüsünde, platformun bir görüntüyü renklendirme davranışı gösterilmektedir.
Uyarı
Platform davranışları belirli bir denetim türü (veya birçok denetime uygulanabilen bir üst sınıf) için yazılır ve yalnızca uyumlu bir denetime eklenmelidir. Uyumsuz bir denetime platform davranışı eklemeye çalışmak istisna fırlatılmasına neden olur.