BindableObject Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Uygulama geliştiricilerinin doğrulamayı, tür zorlamasını ve olay sistemini etkinleştirerek bir nesnedeki verilerde yapılan değişiklikleri başka bir nesneye yayabileceği bir mekanizma sağlar. BindableProperty.
public abstract class BindableObject : System.ComponentModel.INotifyPropertyChanged, Xamarin.Forms.Internals.IDynamicResourceHandler
type BindableObject = class
interface INotifyPropertyChanged
interface IDynamicResourceHandler
- Devralma
-
System.ObjectBindableObject
- Türetilmiş
- Uygulamalar
-
System.ComponentModel.INotifyPropertyChanged IDynamicResourceHandler
Açıklamalar
sınıfı, BindableObject uygulama geliştiricisinin değişikliklere yanıt olarak nesneler arasında verileri eşitlemesini sağlayan bir veri depolama mekanizması sağlar. Örneğin, MVVM tasarım desenindeki Görünüm ve Görünüm Modeli arasında. Ad alanındaki Xamarin.Forms tüm görsel öğeler sınıfından BindableObject devralındığından, hepsi kullanıcı arabirimi öğelerinin arkasındaki verileri uygulama geliştiricisi tarafından sağlanan Modelleri Görüntüle'ye bağlamak için kullanılabilir.
içindeki bir özelliğin BindableObjectarkasındaki verileri genellikle bir görünüme bağlamak için, uygulama geliştiricileri aşağıdakileri yapmalıdır.
İlk olarak, geliştirici görünümde bir çift özellik oluşturur; bunlardan biri bir BindableProperty, diğeri ise gereken türde bir özelliktir. Aşağıdaki kodda, MockBindableObject
üretim kodunda genellikle bir kullanıcı arabirimi nesnesi olacak nesnenin kısaltması yer alır. Uygulama geliştiricileri, ilişkili özellikte değerini almak ve ayarlamak için ve GetValue(BindableProperty) kullanımını SetValue(BindableProperty, Object) not etmelidir; İstenen türün özelliği, bağlı özelliğin hedefinin uygulayacağı arabirimi sağlar.
class MockBindableObject : BindableObject
{
// App developers should use the method below in production code for
// better performance
public static readonly BindableProperty BoundNameProperty =
BindableProperty.Create ("Foo", typeof (string),
typeof (MockBindableObject),
default(string));
// App developers should use the method below during development for
// design-time error checking as the codebase evolves.
// public static readonly BindableProperty FooProperty
// = BindableProperty.Create<MockBindableObject, string> (
// o => o.Foo, default (string)
// );
public string BoundName
{
get { return (string) GetValue (BoundNameProperty); }
set { SetValue (BoundNameProperty, value); }
}
}
İkinci olarak geliştirici, arabirimini uygulayan System.ComponentModel.INotifyPropertyChanged bir sınıfta ilişkili özellik için uygulamayı oluşturur. MVVM tasarım deseninde bu genellikle Modeli Görüntüle tarafından gerçekleştirilir. Uygulama geliştiricileri, System.ComponentModel.INotifyPropertyChanged Modelleri Görüntüle olarak kullanmak istedikleri sınıflarda arabirimi uygulamalıdır. Aşağıdaki örnekte, uygulama geliştiricileri özelliğin uygulandığı idiomatic yöntemini Name
not almalıdır, önce özelliğin gerçekten değiştiğinden emin olmalı ve değişmediyse döndürmelidir ve yalnızca değeri atayarak yöntemini çağırmalıdır OnPropertyChanged(String) . Ayrıca, Name
aşağıdaki örnekteki özellik yalnızca alanı sarmalar name
. Uygulamada uygulama geliştiricisi, uygulama verilerinin depolandığı farklı bir model seçebilir.
class MockViewModel : INotifyPropertyChanged
{
string name;
public string Name
{
get { return name; }
set
{
// OnPropertyChanged should not be called if the property value
// does not change.
if (name == value)
return;
name = value;
OnPropertyChanged ();
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged (string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler (this, new PropertyChangedEventArgs (propertyName));
}
}
Üçüncüsü ve son olarak, uygulama geliştiricisi Bir BindableObject örneğini INotifyPropertyChanged uygulayan bir örneğe bağlar. MVVM tasarım deseninin kelime dağarcığında, bu "Görünüm örneğini Bir Görünüm Modeli örneğine bağlama"dır. Bu adım tamamlandıktan sonra, verilerdeki değişiklikler Görünüm ve Görünüm Modeli arasında, varsa, bağlama adımı sırasında geçirilen sabit listesi değeri BindingMode tarafından belirlenen bir şekilde yayılır.
Aşağıdaki kod, yukarıdaki sınıflara başvuran bir projeye eklendiğinde hem hem MockViewModel
de MockBindable
öğesinin bir örneğini oluşturur, bazı başlatma işlemleri gerçekleştirir, bağlamayı ayarlar ve sonra tek yönlü bağlamayı gösterir. Aşağıdaki kod özel durum oluşturmadan çalışır.
public static void OneWayDemo ()
{
var view = new MockBindableObject ();
var viewModel = new MockViewModel ();
// Pre-load the ViewModel, for demonstration purposes
viewModel.Name = "Testing";
// Create a one-way (default) binding
view.SetBinding (MockBindableObject.BoundNameProperty, new Binding ("Name"));
// App developers should only set the binding context after all
// calls to SetBinding() have been made, for performance reasons.
view.BindingContext = viewModel;
// In a one way binding, the ViewModel value will be used to update
// the values in the View during initialization
if (view.BoundName != "Testing")
throw new Exception ();
view.BoundName = "gnitseT";
// in a one way binding, changes to the View will NOT update the ViewModel
if (viewModel.Name == "gnitseT")
throw new Exception ();
}
Oluşturucular
BindableObject() |
BindableObject sınıfının yeni bir örneğini başlatır. |
Alanlar
BindingContextProperty |
Arabirimi özelliği tarafından BindingContext sağlanan ilişkili özelliği uygular. |
Özellikler
BindingContext |
Bu BindableObjectöğesine ait ilişkili özellikler tarafından hedeflenecek özellikleri içeren nesneyi alır veya ayarlar. |
Dispatcher |
Uygulama geliştiricilerinin doğrulamayı, tür zorlamasını ve olay sistemini etkinleştirerek bir nesnedeki verilerde yapılan değişiklikleri başka bir nesneye yayabileceği bir mekanizma sağlar. BindableProperty. |
Yöntemler
ApplyBindings() |
bağlamalarını uygulamasına BindingContextuygulayın. |
ClearValue(BindableProperty) |
için |
ClearValue(BindablePropertyKey) |
tarafından tanımlanan |
CoerceValue(BindableProperty) |
Uygulama geliştiricilerinin doğrulamayı, tür zorlamasını ve olay sistemini etkinleştirerek bir nesnedeki verilerde yapılan değişiklikleri başka bir nesneye yayabileceği bir mekanizma sağlar. BindableProperty. |
CoerceValue(BindablePropertyKey) |
Uygulama geliştiricilerinin doğrulamayı, tür zorlamasını ve olay sistemini etkinleştirerek bir nesnedeki verilerde yapılan değişiklikleri başka bir nesneye yayabileceği bir mekanizma sağlar. BindableProperty. |
GetValue(BindableProperty) |
BindableProperty içinde yer alan değeri döndürür. |
GetValues(BindableProperty, BindableProperty) |
Geçersiz.
Xamarin tarafından dahili kullanım için. Forms platformu. |
GetValues(BindableProperty, BindableProperty, BindableProperty) |
Geçersiz.
Xamarin tarafından dahili kullanım için. Forms platformu. |
IsSet(BindableProperty) |
Hedef özellik varsa ve ayarlanmışsa döndürür |
OnBindingContextChanged() |
BindingContext değiştiğinde bir eylem yürütmek için bu yöntemi geçersiz kılın. |
OnPropertyChanged(String) |
Bir özellikte değişiklik olduğunu bildirmek için bir alt sınıftan bu yöntemi çağırabilirsiniz. |
OnPropertyChanging(String) |
Bir özellikte değişiklik olacağını bildirmek için bir alt sınıftan bu yöntemi çağırabilirsiniz. |
RemoveBinding(BindableProperty) |
Önceden ayarlanmış bağlamayı kaldırır. |
SetBinding(BindableProperty, BindingBase) |
Bir özelliğe bağlama atar. |
SetInheritedBindingContext(BindableObject, Object) |
Devralınan bağlamı iç içe bir öğeye ayarlar. |
SetValue(BindableProperty, Object) |
Belirtilen özelliğin değerini ayarlar. |
SetValue(BindablePropertyKey, Object) |
propertyKey değerini ayarlar. |
SetValueCore(BindableProperty, Object, SetValueFlags) |
Xamarin tarafından dahili kullanım için. Forms platformu. |
UnapplyBindings() |
Önceden ayarlanmış tüm bağlamaları uygulamaz. |
Ekinlikler
BindingContextChanged |
Özellik her değiştiğinde BindingContext oluşturulur. |
PropertyChanged |
Bir özellik değiştiğinde oluşturulur. |
PropertyChanging |
Bir özellik değişmek üzereyken tetikleniyor. |
Belirtik Arabirim Kullanımları
IDynamicResourceHandler.SetDynamicResource(BindableProperty, String) |
Xamarin tarafından dahili kullanım için. Forms platformu. |
Uzantı Metotları
GetPropertyIfSet<T>(BindableObject, BindableProperty, T) |
Uygulama geliştiricilerinin doğrulamayı, tür zorlamasını ve olay sistemini etkinleştirerek bir nesnedeki verilerde yapılan değişiklikleri başka bir nesneye yayabileceği bir mekanizma sağlar. BindableProperty. |
SetAppThemeColor(BindableObject, BindableProperty, Color, Color) |
Uygulama geliştiricilerinin doğrulamayı, tür zorlamasını ve olay sistemini etkinleştirerek bir nesnedeki verilerde yapılan değişiklikleri başka bir nesneye yayabileceği bir mekanizma sağlar. BindableProperty. |
SetBinding(BindableObject, BindableProperty, String, BindingMode, IValueConverter, String) |
Bir özelliğe bağlama oluşturur ve uygular. |
SetBinding<TSource>(BindableObject, BindableProperty, Expression<Func<TSource,Object>>, BindingMode, IValueConverter, String) |
Geçersiz.
bir ifadeden bağlama oluşturur ve uygular. |
SetOnAppTheme<T>(BindableObject, BindableProperty, T, T) |
Uygulama geliştiricilerinin doğrulamayı, tür zorlamasını ve olay sistemini etkinleştirerek bir nesnedeki verilerde yapılan değişiklikleri başka bir nesneye yayabileceği bir mekanizma sağlar. BindableProperty. |