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.
, Doğrulama, tür zorlaması ve bir olay sistemi etkinleştirerek, uygulama geliştiricilerinin bir nesnedeki verilere yapılan değişiklikleri diğerine yaymasına olanak tanıyan bir mekanizma sağlar. BindableProperty.
public abstract class BindableObject : System.ComponentModel.INotifyPropertyChanged, Xamarin.Forms.Internals.IDynamicResourceHandler
type BindableObject = class
interface INotifyPropertyChanged
interface IDynamicResourceHandler
- Devralma
-
BindableObject
- Türetilmiş
- Uygulamalar
Açıklamalar
BindableObjectSınıfı, uygulama geliştiricisinin, örneğin MVVM tasarım düzenindeki görüntüleme ve görüntüleme modeli arasındaki değişiklikler gibi nesneler arasında verileri eşitlemesini sağlayan bir veri depolama mekanizması sağlar. Ad alanındaki tüm görsel öğeleri Xamarin.Forms BindableObject sınıfından devralınır, bu nedenle, uygulama geliştiricisi tarafından sağlanan modelleri görüntülemek için Kullanıcı arabirimi öğelerinin arkasındaki verileri bağlamak üzere tümü kullanılabilir.
Bir özelliğin arkasındaki verileri BindableObject , genellikle görünüm modelindeki bir özelliğe bağlamak için, uygulama geliştiricilerinin aşağıdakileri yapması gerekir.
İlk olarak, geliştirici görünümde bir çift özellik oluşturur, bunlardan biri BindableProperty ve diğeri herhangi bir tür özelliği gereklidir. Aşağıdaki kodda, Mockbindadbleobject , genellikle üretim kodunda bir kullanıcı arabirimi nesnesi olacak şekilde ' ı temsil eder. Uygulama geliştiricileri, SetValue(BindableProperty, Object) GetValue(BindableProperty) bağlı özelliğindeki değeri almak ve ayarlamak için ve kullanımını notmalıdır; İstenen türün özelliği, bağlantılı özelliğin hedefinin uygulayamayacağı 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); }
}
}
İkincisi, geliştirici arabirimini uygulayan bir sınıfta, bağlanan özellik için uygulama oluşturur INotifyPropertyChanged . MVVM tasarım modelinde, bu genellikle görünüm modeli tarafından yapılır. Uygulama geliştiricileri INotifyPropertyChanged arabirimini görüntüleme modelleri olarak kullanmak istedikleri sınıflarda uygulamalıdır. Aşağıdaki örnekte, uygulama geliştiricileri ad özelliğinin uygulandığı, ilk olarak özelliğin gerçekten değiştirildiğinden ve geri döndürdüğü emin olun, sonra da değeri atayıp yöntemi çağırmak için kullanılır OnPropertyChanged(String) . Ayrıca, aşağıdaki örnekteki Name özelliği yalnızca ad alanını sarmalanmış. Uygulamada, uygulama geliştiricisi uygulama verilerinin kaydedileceği 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ü ve son olarak, uygulama geliştiricisi bir Bindavbleobject örneğini INotifyPropertyChanged uygulayan bir örneğe bağlar. MVVM tasarım deseninin sözlüğüne bu, "görünümün bir örneğini bir görünüm modeli örneğine bağlamadır". Bu adım tamamlandıktan sonra, veri içindeki değişiklikler,, BindingMode varsa, bağlama adımı sırasında geçirilen numaralandırma değeri tarafından belirlenen bir şekilde görünüm ve görüntüleme modeli arasında yayılır.
Aşağıdaki kod, yukarıdaki sınıflara başvuran bir projeye dahil edildiğinde, hem Mockbindable hem de Mockviewmodel'in bir örneğini oluşturur, bazı başlatma 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() |
Bindadbleobject sınıfının yeni bir örneğini başlatır. |
Alanlar
| BindingContextProperty |
Arabirimi özelliği tarafından sağlanmış olan bağlantılı özelliği uygular BindingContext . |
Özellikler
| BindingContext |
Buna ait olan bağlı özellikler tarafından hedeflenecek özellikleri içeren nesneyi alır veya ayarlar BindableObject . |
| Dispatcher | |
Yöntemler
| ApplyBindings() |
Bağlamaları uygulamasına uygulayın BindingContext . |
| ClearValue(BindableProperty) |
İçin tarafından ayarlanan her değeri SetValue temizler |
| ClearValue(BindablePropertyKey) |
Tarafından tanımlanan özelliği için tarafından ayarlanan herhangi bir değeri temizler SetValue |
| CoerceValue(BindableProperty) | |
| CoerceValue(BindablePropertyKey) | |
| GetValue(BindableProperty) |
Bindadbleproperty içinde bulunan değeri döndürür. |
| GetValues(BindableProperty, BindableProperty) |
Kullanımdan kalktı.
Xamarin. Forms platformu tarafından dahili kullanım için. |
| GetValues(BindableProperty, BindableProperty, BindableProperty) |
Kullanımdan kalktı.
Xamarin. Forms platformu tarafından dahili kullanım için. |
| IsSet(BindableProperty) |
|
| 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 bu yöntemi bir alt sınıftan çağırın. |
| OnPropertyChanging(String) |
Bir özellik üzerinde bir değişikliğin gerçekleşmesini bildirmek için bu yöntemi bir alt sınıftan çağırın. |
| RemoveBinding(BindableProperty) |
Daha önce ayarlanan bağlamayı kaldırır. |
| SetBinding(BindableProperty, BindingBase) |
Bir özelliğe bağlama atar. |
| SetInheritedBindingContext(BindableObject, Object) |
Devralınan bağlamı iç içe geçmiş bir öğeye ayarlar. |
| SetValue(BindableProperty, Object) |
Belirtilen özelliğin değerini ayarlar. |
| SetValue(BindablePropertyKey, Object) |
PropertyKey değerini ayarlar. |
| SetValueCore(BindableProperty, Object, SetValueFlags) |
Xamarin. Forms platformu tarafından dahili kullanım için. |
| UnapplyBindings() |
Daha önce ayarlanan tüm bağlamalar için geçerli değildir. |
etkinlik
| BindingContextChanged |
Özellik her değiştiğinde tetiklenir BindingContext . |
| PropertyChanged |
Bir özellik değiştiğinde tetiklenir. |
| PropertyChanging |
Bir özellik değiştirmek üzere olduğunda tetiklenir. |
Belirtik Arabirim Kullanımları
| IDynamicResourceHandler.SetDynamicResource(BindableProperty, String) |
Xamarin. Forms platformu tarafından dahili kullanım için. |
Uzantı Metotları
| GetPropertyIfSet<T>(BindableObject, BindableProperty, T) | |
| SetAppThemeColor(BindableObject, BindableProperty, Color, Color) | |
| 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) |
Kullanımdan kalktı.
Bir ifadeden bir bağlama oluşturur ve uygular. |
| SetOnAppTheme<T>(BindableObject, BindableProperty, T, T) | |