Saya memiliki kebutuhan untuk mengatur pengikatan kode.
Sepertinya aku tidak bisa melakukannya dengan benar.
Inilah yang saya coba:
XAML:
<TextBox Name="txtText"></TextBox>
Kode di belakang:
Binding myBinding = new Binding("SomeString");
myBinding.Source = ViewModel.SomeString;
myBinding.Mode = BindingMode.TwoWay;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(txtText, TextBox.TextProperty, myBinding);
ViewModel:
public string SomeString
{
get
{
return someString;
}
set
{
someString= value;
OnPropertyChanged("SomeString");
}
}
Properti tidak diperbarui saat saya menyetelnya.
Apa yang saya lakukan salah?
c#
wpf
xaml
data-binding
Willem
sumber
sumber
Anda perlu mengubah sumber ke objek viewmodel:
sumber
Selain jawaban dari Dyppl , saya pikir itu akan menyenangkan untuk menempatkan ini dalam
OnDataContextChanged
acara:Kami juga memiliki kasus di mana kami baru saja menyimpan
DataContext
ke properti lokal dan menggunakannya untuk mengakses properti model tampilan. Pilihan ada di tangan Anda, saya suka pendekatan ini karena lebih konsisten dengan yang lain. Anda juga dapat menambahkan beberapa validasi, seperti pemeriksaan null. Jika Anda benar-benar mengubahDataContext
keadaan, saya pikir akan menyenangkan juga untuk menelepon:untuk menghapus pengikatan viewmodel lama (
e.oldValue
di event handler).sumber