BindingMode 列舉

定義

繫結傳播的變更方向。

public enum BindingMode
type BindingMode = 
繼承
BindingMode

欄位

Default 0

當在 Bindings 中使用時,表示 Binding 應使用 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"

適用於