BindingMode 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
繫結傳播的變更方向。
public enum BindingMode
type BindingMode =
- 繼承
-
System.EnumBindingMode
欄位
Default | 0 | 當在 Bindings 中使用時,表示 Binding 應使用 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"