Поделиться через


BindingMode Перечисление

Определение

Направление синхронизации изменений для привязок.

public enum class BindingMode
public enum BindingMode
type BindingMode = 
Public Enum BindingMode
Наследование
BindingMode

Поля

Default 0

При использовании в привязках указывает, что привязка должна использовать DefaultBindingMode. При использовании в объявлении BindableProperty по умолчанию равно BindingMode.OneWay.

TwoWay 1

Указывает, что привязка должна распространять изменения из источника (обычно это модель представления) в целевой объект (BindableObject) в обоих направлениях.

OneWay 2

Указывает, что привязка должна распространять изменения только из источника (обычно это модель представления) в целевой объект (BindableObject). Этот режим используется по умолчанию для большинства значений BindableProperty.

OneWayToSource 3

Указывает, что привязка должна распространять изменения только из целевого объекта (BindableObject) в источник (обычно модель представления). Используется, главным образом, для значений BindableProperty только для чтения.

OneTime 4

Указывает, что привязка будет применяться только в том случае, если контекст привязки изменяется, и значение не будет отслеживаться для изменений.INotifyPropertyChanged

Комментарии

В следующих примерах показаны некоторые варианты использования BindingMode.

public class PersonViewModel
{
  public string Name { get; set; }
  public string Company { get; set; }
}

Label label;
PersonViewModel viewmodel;

//BindingMode.OneWay
label = new Label ();
label.BindingContext = viewmodel = new PersonViewModel ();
label.SetBinding<PersonViewModel> (Label.TextProperty, vm => vm.Name, mode: BindingMode.OneWay);

viewmodel.Name = "John Doe";
Debug.WriteLine (label.Text); //prints ""
label.Text = "Foo";
Debug.WriteLine (viewmodel.Name); //prints "John Doe"


//BindingMode.TwoWay
label = new Label ();
label.BindingContext = viewmodel = new PersonViewModel ();
label.SetBinding<PersonViewModel> (Label.TextProperty, vm => vm.Name, mode: BindingMode.TwoWay);

viewmodel.Name = "John Doe";
Debug.WriteLine (label.Text); //prints "John Doe"
label.Text = "Foo";
Debug.WriteLine (viewmodel.Name); //prints "Foo"


//BindingMode.OneWayToSource
label = new Label ();
label.BindingContext = viewmodel = new PersonViewModel ();
label.SetBinding<PersonViewModel> (Label.TextProperty, vm => vm.Name, mode: BindingMode.OneWayToSource);

viewmodel.Name = "John Doe";
Debug.WriteLine (label.Text); //prints ""
label.Text = "Foo";
Debug.WriteLine (viewmodel.Name); //prints "Foo"

Применяется к