Trong vài tuần qua, tôi đã nghiên cứu phát triển ứng dụng nền tảng chéo (IOS/Android/WP7) bằng cách sử dụng khung MVVMCross. Hôm nay tôi gặp phải một vấn đề tôi không thực sự biết làm thế nào để giải quyết, vì vậy hy vọng bạn có thể đẩy tôi đi đúng hướng.Chuyển các biến từ ViewModel sang Chế độ xem khác (MVVMCross)
Trong IOS Tôi đã xây dựng sau đây để điều hướng đến một trang khác (mã dưới đây nằm trong một ViewModel):
KeyValuePair<string,string> kvpAct1 = new KeyValuePair<string, string>("short", ".countertest5");
public IMvxCommand BeckhoffActuator1
{
get
{
return new MvxRelayCommand<Type>((type) => this.RequestNavigate<Beckhoff.BeckhoffActuatorViewModel>(kvpAct1));
}
}
Khi IMvxCommand này là bắn (nút bấm) View tiếp theo được nạp, trong trường hợp này là BeckhoffActuatorViewModel. Trong đoạn mã của BeckhoffActuatorView tôi sử dụng KeyValuePair với phần trên:
public class BeckhoffActuatorView : MvxTouchDialogViewController<BeckhoffActuatorViewModel>
{
ICollection<string> icol;
public BeckhoffActuatorView(MvxShowViewModelRequest request) : base(request, UITableViewStyle.Grouped, null, true)
{
icol = request.ParameterValues.Values;
}
public override void ViewDidLoad()
{
//Code
}
}
xây dựng này đang làm việc tốt trong IOS, nhưng tôi muốn sử dụng việc xây dựng tương tự trong ứng dụng Android của tôi.
Mã trong ViewModel không thay đổi vì đó là toàn bộ ý tưởng của MVVM. Nhưng mã của BackhoffActuatorView là khác nhau dành cho Android:
public class BeckhoffActuatorView : MvxBindingActivityView<BeckhoffSensorViewModel>
{
public ICollection<string> icol;
public BeckhoffActuatorView()
{
Debug.WriteLine("Standard");
}
public BeckhoffActuatorView(MvxShowViewModelRequest request)
{
Debug.WriteLine("Custom");
icol = request.ParameterValues.Values;
}
protected override void OnViewModelSet()
{
SetContentView(Resource.Layout.BeckhoffActuatorView);
}
}
Đoạn mã trên không hoạt động, các MvxBindingActivityView dường như không thực hiện một cái gì đó tương tự như ViewController tôi sử dụng trong IOS. Mã chỉ đến trong hàm tạo tiêu chuẩn, và khi tôi bỏ nó ra hoàn toàn, nó sẽ không biên dịch/chạy.
Có ai biết tôi có thể truy cập keyvaluepair mà tôi gửi bằng RequestNavigate không? Cảm ơn bạn!
Cảm ơn Stuart, sử dụng ví dụ Twitter mà tôi đã cố gắng khắc phục sự cố của mình! – David
Công việc tốt - nếu bạn cần một ví dụ khác về truyền tham số, thì bạn có thể thử CustomerManagement và các mẫu Sách quá :) – Stuart