BindableObject BindableObject Class

정의

애플리케이션 개발자가 유효성 검사, 형식 강제 변환 및 이벤트 시스템을 활성화하여 한 개체에서 다른 개체로 데이터에 대한 변경 내용을 전파할 수 있는 메커니즘을 제공합니다.Provides a mechanism by which application developers can propagate changes that are made to data in one object to another, by enabling validation, type coercion, and an event system. BindableProperty.BindableProperty.

public abstract class BindableObject : System.ComponentModel.INotifyPropertyChanged, Xamarin.Forms.Internals.IDynamicResourceHandler
type BindableObject = class
    interface INotifyPropertyChanged
    interface IDynamicResourceHandler
상속
BindableObjectBindableObject
파생
구현

설명

BindableObject 클래스는 응용 프로그램 개발자 보기와 MVVM 디자인 패턴에서 뷰 모델 간에 예를 들어 변경에 대 한 응답에서 개체 간에 데이터를 동기화 할 수 있는 데이터 저장소 메커니즘을 제공 합니다.The BindableObject class provides a data storage mechanism that enables the application developer to synchronize data between objects in response to changes, for example, between the View and View Model in the MVVM design pattern. 모든의 시각적 요소를 Xamarin.Forms 네임 스페이스에서 상속 BindableObject 는 사용할 수 있도록 모든 응용 프로그램 개발자가 제공 되는 보기 모델에 해당 사용자 인터페이스 요소 뒤의 데이터를 바인딩할 클래스.All of the visual elements in the Xamarin.Forms namespace inherit from BindableObject class, so they can all be used to bind the data behind their user interface elements to View Models that are supplied by the application developer.

뒤에 있는 속성에 데이터를 바인딩하는 BindableObject, 일반적으로 모델, 응용 프로그램 개발자는 다음을 수행 해야 하는 보기에서 속성에 뷰를 합니다.To bind the data behind a property in a BindableObject, typically a view, to a property in the View Model, application developers should do the following.

먼저 개발자 한 쌍의 속성을 중 하나는 뷰를 만듭니다를 BindableProperty, 어떤 형식이 필요할 때의 속성 이며, 다른 하나는 합니다.First, the developer creates a pair of properties on the view, one of which is a BindableProperty, and the other of which is a property of whatever type is required. 아래 코드에 MockBindableObject 항목은 일반적으로 프로덕션 코드에서 사용자 인터페이스 개체에 나타납니다.In the code below, MockBindableObject stands in for what would typically be a user interface object in production code. 응용 프로그램 개발자의 사용에 유의 해야 SetValue(BindableProperty, Object)GetValue(BindableProperty) 가져오고 바인딩된 속성의 값을 설정 하려면 원하는 형식의 속성이 바인딩된 속성의 대상 구현 하는 인터페이스를 제공 합니다.Application developers should note the use of SetValue(BindableProperty, Object) and GetValue(BindableProperty) to get and set the value on the bound property; The property of the desired type provides the interface that the target of the bound property will implement.


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

둘째, 구현 하는 클래스에 바인딩된 속성에 대 한 구현을 만듭니다를 개발자는 INotifyPropertyChanged 인터페이스입니다.Second, the developer creates the implementation for the bound property in a class that implements the INotifyPropertyChanged interface. MVVM 디자인 패턴에서는 일반적으로 이렇게 보기 모델입니다.In the MVVM design pattern, this is typically done by the View Model. 응용 프로그램 개발자가 구현 해야 합니다 INotifyPropertyChanged 뷰 모델로 사용 하고자 하는 클래스의 인터페이스입니다.Application developers should implement the INotifyPropertyChanged interface on classes that they want to use as View Models. 아래 예제에서는 앱 개발자는 자연 스러운 기록해 수행 해야 방식으로 이름을 , 먼저 실제로 변경 하 고 반환 하지 않았을 경우에 속성을 확인 하는 다음 값 및 호출 할당 속성은 구현는 OnPropertyChanged(String) 메서드.In the example below, app developers should take note of the idiomatic way that the Name property is implemented to, first, ensure that the property actually changed and return if it did not, and only then assign the value and call the OnPropertyChanged(String) method. 또한를 이름 래핑하고 단순히 아래 예제에서는 속성을 이름 필드.Additionally, the Name property in the example below merely wraps the name field. 실제로 응용 프로그램 개발자를 다른 모델을 응용 프로그램 데이터를 저장할 수도 있습니다.In practice, the application developer may choose a different model in which to store application data.


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

세 번째 및 마지막으로, 응용 프로그램 개발자는 BindableObject 인스턴스의 INotifyPropertyChanged를 구현 하는 인스턴스에 바인딩합니다.Third, and finally, the application developer binds an instance of a BindableObject to an instance that implements INotifyPropertyChanged. MVVM 디자인 패턴의 어휘,이 "바인딩 뷰의 인스턴스 보기 모델의 인스턴스로입니다."In the vocabulary of the MVVM design pattern, this is "binding an instance of the View to an instance of a View Model." 값에 의해 결정 되는 방식으로 데이터 변경 내용 보기 및 보기 모델 간에 전파 되이 단계가 완료 되 면를 BindingMode 열거형, 바인딩 단계에서 전달 된 경우.Once this step is complete, changes in the data are propagated between the View and View Model in a way that is determined by the value of the BindingMode enumeration, if any, that was passed during the binding step.

코드 위의 클래스를 참조 하는 프로젝트에 포함 하는 경우 아래 둘 다의 인스턴스를 만듭니다 MockBindable 하 고 MockViewModel일부 intitialization 수행, 바인딩, 설정 및 단방향 바인딩을 보여 줍니다.The code below, when included in a project that reference the classes above, creates an instance of both MockBindable and MockViewModel, performs some intitialization, sets the binding, and then demonstrates a one-way binding. 아래 코드는 예외를 throw 하지 않고 실행 됩니다.The code below runs without throwing an exception.


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 ();
}

생성자

BindableObject() BindableObject()

BindableObject 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the BindableObject class.

필드

BindingContextProperty BindingContextProperty

해당 인터페이스가 BindingContext 속성에서 제공된 바인딩된 속성을 구현합니다.Implements the bound property whose interface is provided by the BindingContext property.

속성

BindingContext BindingContext

BindableObject에 속하는 바인딩된 속성에 의해 대상으로 지정될 속성을 포함하는 개체를 가져오거나 설정합니다.Gets or sets object that contains the properties that will be targeted by the bound properties that belong to this BindableObject.

메서드

ApplyBindings() ApplyBindings()

바인딩을 BindingContext에 적용합니다.Apply the bindings to BindingContext.

ClearValue(BindableProperty) ClearValue(BindableProperty)

property에 대해 SetValue로 설정된 모든 값을 지웁니다.Clears any value set by SetValue for property.

ClearValue(BindablePropertyKey) ClearValue(BindablePropertyKey)

propertyKey로 식별되는 속성에 대해 SetValue로 설정된 모든 값을 지웁니다.Clears any value set by SetValue for the property that is identified by propertyKey.

GetValue(BindableProperty) GetValue(BindableProperty)

BindableProperty에 포함되는 값을 반환합니다.Returns the value that is contained in the BindableProperty.

GetValues(BindableProperty, BindableProperty) GetValues(BindableProperty, BindableProperty)

Xamarin.Forms 플랫폼에서 내부용으로 사용합니다.For internal use by the Xamarin.Forms platform.

GetValues(BindableProperty, BindableProperty, BindableProperty) GetValues(BindableProperty, BindableProperty, BindableProperty)

Xamarin.Forms 플랫폼에서 내부용으로 사용합니다.For internal use by the Xamarin.Forms platform.

IsSet(BindableProperty) IsSet(BindableProperty)

대상 속성이 있고 설정된 경우 true를 반환합니다.Returns true if the target property exists and has been set.

OnBindingContextChanged() OnBindingContextChanged()

BindingContext가 변경될 때 작업을 실행하려면 이 메서드를 재정의합니다.Override this method to execute an action when the BindingContext changes.

OnPropertyChanged(String) OnPropertyChanged(String)

자식 클래스에서 이 메서드를 호출하여 속성이 변경되었음을 알립니다.Call this method from a child class to notify that a change happened on a property.

OnPropertyChanging(String) OnPropertyChanging(String)

자식 클래스에서 이 메서드를 호출하여 속성이 변경되었음을 알립니다.Call this method from a child class to notify that a change is going to happen on a property.

RemoveBinding(BindableProperty) RemoveBinding(BindableProperty)

이전 바인딩 설정을 제거합니다.Removes a previously set binding.

SetBinding(BindableProperty, BindingBase) SetBinding(BindableProperty, BindingBase)

속성에 바인딩을 할당합니다.Assigns a binding to a property.

SetInheritedBindingContext(BindableObject, Object) SetInheritedBindingContext(BindableObject, Object)

중첩된 요소에 상속된 컨텍스트를 설정합니다.Sets the inherited context to a nested element.

SetValue(BindableProperty, Object) SetValue(BindableProperty, Object)

지정한 속성의 값을 설정합니다.Sets the value of the specified property.

SetValue(BindablePropertyKey, Object) SetValue(BindablePropertyKey, Object)

propertyKey의 값을 설정합니다.Sets the value of the propertyKey.

SetValueCore(BindableProperty, Object, SetValueFlags) SetValueCore(BindableProperty, Object, SetValueFlags)

Xamarin.Forms 플랫폼에서 내부용으로 사용합니다.For internal use by the Xamarin.Forms platform.

UnapplyBindings() UnapplyBindings()

이전 모든 바인딩 설정을 적용 해제합니다.Unapplies all previously set bindings.

이벤트

BindingContextChanged BindingContextChanged

BindingContext 속성이 변경될 때마다 발생됩니다.Raised whenever the BindingContext property changes.

PropertyChanged PropertyChanged

속성이 변경된 경우 발생됩니다.Raised when a property has changed.

PropertyChanging PropertyChanging

속성이 변경되려고 할 때 발생됩니다.Raised when a property is about to change.

명시적 인터페이스 구현

IDynamicResourceHandler.SetDynamicResource(BindableProperty, String) IDynamicResourceHandler.SetDynamicResource(BindableProperty, String)

Xamarin.Forms 플랫폼에서 내부용으로 사용합니다.For internal use by the Xamarin.Forms platform.

확장 메서드

SetBinding(BindableObject, BindableProperty, String, BindingMode, IValueConverter, String) SetBinding(BindableObject, BindableProperty, String, BindingMode, IValueConverter, String)

속성에 바인딩을 만들고 적용합니다.Creates and applies a binding to a property.

SetBinding<TSource>(BindableObject, BindableProperty, Expression<Func<TSource,Object>>, BindingMode, IValueConverter, String) SetBinding<TSource>(BindableObject, BindableProperty, Expression<Func<TSource,Object>>, BindingMode, IValueConverter, String)

식에서 바인딩을 만들고 적용합니다.Creates and applies a binding from an expression.

적용 대상