BindingMode 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
绑定的变更传播方向。
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"