За последние пару недель я работал над разработкой кросс-платформенного приложения (IOS/Android/WP7) с использованием структуры MVVMCross. Сегодня я столкнулся с проблемой, я действительно не знаю, как ее решить, поэтому, надеюсь, вы можете подтолкнуть меня в правильном направлении.Передача переменных из ViewModel в другой View (MVVMCross)
В IOS я следующее построение для навигации на другую страницу (код ниже расположен в 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));
}
}
Когда IMvxCommand обжигают (кнопка нажата) следующий вид загрузки, в этом случае BeckhoffActuatorViewModel. В коде BeckhoffActuatorView я использую KeyValuePair сверху:
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
}
}
Эта конструкция работает отлично в IOS, но я хотел бы использовать ту же конструкцию в моем Android App.
Код в ViewModel не изменился, так как это идея MVVM. Но код BackhoffActuatorView отличается для 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);
}
}
Код выше не работает, MvxBindingActivityView не кажется, реализовать что-то подобное ViewController я использую в IOS. Код входит только в стандартный конструктор, и когда я оставляю его полностью, он не будет компилироваться/запускаться.
Кто-нибудь знает, что я могу получить доступ к keyvaluepair, который я отправляю с RequestNavigate? Спасибо!
Спасибо, Стюарт, используя пример Twitter, мне удалось исправить мою проблему! – David
Хорошая работа - если вам нужен еще один пример передачи параметров, вы можете попробовать образцы CustomerManagement и Books. :) – Stuart