MVVMCross - Привязать к коллекции - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть модель просмотра со свойством List<MyModel> Items. Когда коллекция Items установлена, я запускаю событие для моего ViewController в iOS. Затем ViewController получает событие и проходит по Items, чтобы создать программно построенный пользовательский интерфейс, содержащий различные метки и текстовые поля.

То, что я пытаюсь сделать, это связать UITextField со свойством в MyModel, которое находится внутри Items, но я не вижу способа сделать это в MVVMCross. Какие-либо предложения?

Ниже приведен упрощенный код для дальнейшего описания моего вопроса:

public class MyModel : MvxNotifyPropertyChanged
{
    public string SomeProperty
    {
        get => return this.someProperty;
        set => this.SetProperty(ref this.someProperty, value);
    }
}
public class MyViewModel : MvxViewModel
{
    public List<MyModel> Items { get; set; }

    public event EventHandler onItemsLoaded;

    public void Initialize()
    {
        this.Items = this.someService.GetItems();
        this.onItemsLoaded.Invoke(this, EventArgs.Empty);
    }

}
public class MyViewController : MvxViewController<MyViewModel>
{
    public override void ViewDidLoad()
    {
        this.ViewModel.onItemsLoaded += this.HandleItemsLoaded;
    }

    private void HandleItemsLoaded(object sender, EventArgs args)
    {
        foreach (var item in this.ViewModel.Items)
        {
            var textField = new UITextField();

            // TODO: How to bind textField.Text to item.SomeProperty??

            this.View.AddSubview(textField);
        }
    }
}
...