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 | Указывает, что привязка будет применяться только в том случае, если контекст привязки изменяется, и значение не будет отслеживаться для изменений. |
Комментарии
В следующих примерах показаны некоторые варианты использования 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"