BindingMode 枚举

定义

绑定的变更传播方向。

public enum BindingMode
type BindingMode = 
继承
System.Enum
BindingMode

字段

Default 0

用在绑定中时,指示的是绑定应使用 DefaultBindingMode。 用在 BindableProperty 声明中时,默认为 BindingMode.OneWay。

OneTime 4

指示仅当绑定上下文发生更改且不会监视值的更改时 INotifyPropertyChanged,才会应用绑定。

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"

适用于