BindableObject Sınıf

Tanım

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
BindableObject
Türetilmiş
Uygulamalar

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 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, 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 MockViewModelde 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 propertytarafından SetValue ayarlanan tüm değerleri temizler.

ClearValue(BindablePropertyKey)

tarafından tanımlanan propertyKeyözelliği için tarafından SetValue ayarlanan tüm değerleri temizler.

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)
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)

Hedef özellik varsa ve ayarlanmışsa döndürür true .

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.Forms platformu tarafından dahili kullanım için.

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.Forms platformu tarafından dahili kullanım için.

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)
Kullanımdan kalktı.

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.

Şunlara uygulanır