BindingMode Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Направление синхронизации изменений для привязок.
public enum BindingMode
type BindingMode =
- Наследование
-
System.EnumBindingMode
Поля
Default | 0 | При использовании в привязках указывает, что привязка должна использовать DefaultBindingMode. При использовании в объявлении BindableProperty по умолчанию равно BindingMode.OneWay. |
OneTime | 4 | Указывает, что привязка будет применяться только при изменении контекста привязки, а значение не будет отслеживаться на наличие изменений с |
OneWay | 2 | Указывает, что привязка должна распространять изменения только из источника (обычно это модель представления) в целевой объект (BindableObject). Этот режим используется по умолчанию для большинства значений BindableProperty. |
OneWayToSource | 3 | Указывает, что привязка должна распространять изменения только из целевого объекта (BindableObject) в источник (обычно модель представления). Используется, главным образом, для значений BindableProperty только для чтения. |
TwoWay | 1 | Указывает, что привязка должна распространять изменения из источника (обычно это модель представления) в целевой объект (BindableObject) в обоих направлениях. |
Комментарии
В следующих примерах показаны некоторые варианты использования 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"