2013-07-18 20 views
6

Tôi có một ứng dụng trong đó hầu hết các điều khiển được tạo trong mã và sau đó được thêm vào bố cục bằng cách sử dụng phương thức AddView. Liệu khuôn khổ cho phép ràng buộc các thuộc tính ViewModel để điều khiển bằng cách sử dụng mã hoặc nó phải được thực hiện trong tập tin axml chỉ?Liệu MvvmCross có cho phép ràng buộc các thuộc tính ViewModel với các điều khiển được tạo khi đang di chuyển không?

Trả lời

9

Được rồi, sau rất nhiều cuộc đấu tranh cuối cùng tôi đã nhận được câu trả lời.

Tôi phải làm những việc sau đây.

1) Thêm một tuyên bố nhập khẩu:

using Cirrious.MvvmCross.Binding.BindingContext; 

2) Thêm đoạn mã sau:

protected override void OnCreate(Bundle bundle) 
{ 
    base.OnCreate(bundle); 
    SetContentView(Resource.Layout.Hello); 

    TableLayout containerLayout = this.FindViewById<TableLayout>(Resource.Id.containerLayout); 
    if (containerLayout != null) 
    {       
     TableRow newRow = new TableRow(base.ApplicationContext); 
     newRow.SetMinimumHeight(50); 

     var txtRace = new EditText(ApplicationContext); 
     txtRace.Hint = "Race"; 

     var bindingSet = this.CreateBindingSet<HelloView, HelloViewModel>(); 
     bindingSet.Bind(txtRace).To(vm => vm.Race); 
     bindingSet.Apply(); 

     newRow.AddView(txtRace); 
     containerLayout.AddView(newRow); 
    } 
} 

Tôi đã có một "TableLayout" trong tập tin HelloView.axml của tôi và tất cả những gì tôi làm điều này là tạo ra một điều khiển hộp EditText mới (txtRace) và thêm nó vào khung nhìn và đồng thời ràng buộc nó vào thuộc tính "Race" của đối tượng HelloViewModel.

Tôi dành rất nhiều thời gian để tìm ra phương thức CreateBindingSet() không gian tên tồn tại vì VS2012 không cho tôi bất kỳ sự hiểu biết nào về điều đó.

Hy vọng điều này sẽ giúp ai đó đối mặt với vấn đề tương tự.

+0

Điều cần biết là bạn đã sắp xếp nó. Chúc may mắn! –

2

Có MvvmCross hỗ trợ các thuộc tính ràng buộc đối với các điều khiển được tạo khi chạy. Bạn có thể xem hướng dẫn này của anh Stuart tuyệt vời trong loạt N + 1 của anh ấy. http://www.youtube.com/watch?feature=player_embedded&v=cYu_9rcAJU4

Lưu ý: Anh ấy đã thể hiện điều này nhiều lần trong chuỗi nhưng tôi vẫn nhớ điều này trên đầu của tôi ngay bây giờ.

+0

Cảm ơn Mohib đã trả lời. – Amit

+0

Tôi vẫn gặp phải vấn đề này. Tôi đã xem bài viết này: http://stackoverflow.com/questions/16724278/mvvmcross-for-android-how-to-do-binding-in-code. Vấn đề mà tôi đang gặp phải là tôi không thể có được phương thức CreateBindingSet(). Hiện tại hoạt động của tôi được kế thừa từ MvxActivity. Tôi có thiếu một số tham chiếu lắp ráp hoặc không gian tên. – Amit

+0

Cảm ơn bạn đã liên kết tới video. Phần mà ông Stuart đề cập đến bạn có thể có nhiều mô hình xem hữu ích. –

Các vấn đề liên quan