BindingMode Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Arah perubahan penyebaran untuk pengikatan.
public enum BindingMode
type BindingMode =
- Warisan
-
System.EnumBindingMode
Bidang
Default | 0 | Saat digunakan dalam Pengikatan, menunjukkan bahwa Pengikatan harus menggunakan DefaultBindingMode. Saat digunakan dalam deklarasi BindableProperty, default ke BindingMode.OneWay. |
OneTime | 4 | Menunjukkan bahwa pengikatan hanya akan diterapkan ketika konteks pengikatan berubah dan nilai tidak akan dipantau untuk perubahan dengan |
OneWay | 2 | Menunjukkan bahwa pengikatan hanya boleh menyebarluaskan perubahan dari sumber (biasanya Model Tampilan) ke target (BindableObject). Ini adalah mode default untuk sebagian besar nilai BindableProperty. |
OneWayToSource | 3 | Menunjukkan bahwa pengikatan hanya boleh menyebarluaskan perubahan dari target (BindableObject) ke sumber (biasanya Model Tampilan). Ini terutama digunakan untuk nilai BindableProperty baca-saja. |
TwoWay | 1 | Menunjukkan bahwa pengikatan harus menyebarkan perubahan dari sumber (biasanya Model Tampilan) ke target (BindableObject) di kedua arah. |
Keterangan
Contoh berikut menunjukkan beberapa kasus penggunaan 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"