[Xamarin Android] Implement your own binding engine (based on XML attributes)
Đầu tiên, chúng ta cần hiểu về MVVM design pattern. Đối với Xamarin Form, việc data binding đã được implemented sẵn vì UI chúng ta được dựng lên từ file xaml. Với Xamarin android, việc binding trực tiếp trên file UI axml là bất khả thi nếu không apply các framework đã có binding engine được tạo ...
Đầu tiên, chúng ta cần hiểu về MVVM design pattern. Đối với Xamarin Form, việc data binding đã được implemented sẵn vì UI chúng ta được dựng lên từ file xaml. Với Xamarin android, việc binding trực tiếp trên file UI axml là bất khả thi nếu không apply các framework đã có binding engine được tạo riêng vd như MVVMCross. Nhưng ở đây mình sẽ dùng MVVMLight Framework vì sự gọn nhẹ và dễ custom của nó. Nhưng cũng với "light" thì đây quả thực có những giới hạn của nó so với ông lớn MVVMCross.
Sau 1 hồi loay hoay google, tìm được resouces hữu ích, mình quyết định viết 1 binding engine cho riêng MVVMLight dựa trên các thẻ Xml để apply data binding trên xamarin android, Binding engine sẽ có những chức năng tưng tự như việc binding trên Xaml:
- OneWay/TwoWay binding
- Hỗ trợ Commands
- Hỗ trợ cùng Converters
- Callback khi 1 event được raised
- Data binding lên UI
Note: Hiện tại đây vẫn là bản protoype và vẫn nằm trong ý tưởng, để đưa vào thực tế cần phải custom để phù hợp với ngữ cảnh của dự án hiện tại