Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Liên kết một lần khác với liên kết một chiều trong MVVMCROSS


Liên kết một lần khác với liên kết một chiều trong MVVMCROSS


Trong MVVMcross, liên kết một lần và liên kết một chiều là hai chế độ liên kết dữ liệu riêng biệt phục vụ các mục đích khác nhau.

ràng buộc một lần

Một lần liên kết chuyển dữ liệu từ chế độ xem sang chế độ xem chỉ một lần, khi nguồn liên kết ban đầu được đặt. Sau khi chuyển ban đầu này, ràng buộc không giám sát các thay đổi trong ViewModel và không cập nhật chế độ xem trừ khi chính nguồn liên kết được đặt lại. Chế độ này rất hữu ích cho các trường có thể định cấu hình nhưng không thay đổi thường xuyên sau khi chúng được đặt. Ví dụ, trong MVVMcross, ràng buộc một lần được sử dụng để đặt văn bản tĩnh từ các tệp ngôn ngữ, vì người dùng thường chọn một ngôn ngữ một lần và không thay đổi thường xuyên sau đó [1].

Liên kết một chiều

Mặt khác, ràng buộc một chiều liên tục cập nhật chế độ xem bất cứ khi nào thuộc tính tương ứng trong ViewModel thay đổi. Điều này có nghĩa là mọi thay đổi đối với thuộc tính của ViewModel sẽ tự động được phản ánh trong chế độ xem. Tuy nhiên, các thay đổi được thực hiện trực tiếp vào chế độ xem không ảnh hưởng đến ViewModel. Liên kết một chiều rất hữu ích khi hiển thị dữ liệu đến từ nguồn động, chẳng hạn như dữ liệu cảm biến hoặc nguồn cấp mạng, trong đó chế độ xem sẽ phản ánh trạng thái mới nhất của ViewModel nhưng không cần gửi cập nhật lại cho nó [1].

Sự khác biệt chính

-Cập nhật tần số: Binding một lần chỉ cập nhật chế độ xem một lần khi thiết lập, trong khi ràng buộc một chiều liên tục cập nhật chế độ xem bất cứ khi nào chế độ xem thay đổi.
-Thay đổi giám sát: Liên kết một lần không giám sát các thay đổi trong chế độ xem sau khi thiết lập ban đầu, trong khi ràng buộc một chiều tích cực lắng nghe các thay đổi trong ViewModel.
-Các trường hợp sử dụng: Một lần là lý tưởng cho dữ liệu thay đổi tĩnh hoặc không thường xuyên, trong khi một chiều phù hợp hơn với dữ liệu động cần được hiển thị theo thời gian thực mà không có tương tác người dùng ảnh hưởng đến chế độ xem.

Tóm lại, trong khi cả hai chế độ chuyển dữ liệu từ chế độ xem sang chế độ xem, ràng buộc một lần chỉ làm như vậy một lần và không theo dõi các thay đổi, trong khi liên kết một chiều liên tục cập nhật chế độ xem dựa trên các thay đổi của ViewModel.

Trích dẫn:
[1] https://www.mvvmcross.com/documentation/fundaments/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-mode-used-in-a-project
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[6] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-the-android-project/understanding-the-data-binding-syntax
[7] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-binding-one-vs-two-way
[10] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[11] https://www.reddit.com/r/javascript