BindingMode 列挙型

定義

バインドの変更の伝達の方向。

public enum BindingMode
type BindingMode = 
継承
BindingMode

フィールド

Default 0

Bindings で使用すると、Bindings が 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"

適用対象