Вот как это работает вместе.
BindingContext
- это объект, который будет областью для любых привязок, которые есть на странице или ее дочерних элементах, если вы не укажете другой контекст для определенного дочернего объекта, но давайте пока не будем слишком усложнять.
Это означает, что когда вы установили BindingContext
, все Bindings
теперь начнут смотреть на объект, на который ссылается BindingContext
. В вашем случае вы устанавливаете BindingContext
для экземпляра QuestionViewModel
.
Вы хотите, чтобы ваш ListView
получил свои предметы из свойства QuestionViewModel.Questions
. Итак, вы устанавливаете привязку так:
<ListView x:Name="ListViewQuestions" ItemsSource="{Binding Questions}" ...>
.
Questions
должно быть публичной собственностью в BindingContext
, в нашем случае QuestionViewModel
. Вы уже поняли это правильно.
Теперь, когда вы назначаете что-то для Questions
, это также должно распространяться на ваш ListView
из-за привязки.
Внутри ListView
вы используете ViewCell
, теперь обратите внимание, что область действия здесь меняется. Каждая ячейка представляет экземпляр объекта внутри ItemsSource
. В нашем случае каждая ячейка будет содержать Question
. Вы используете это:
<Entry x:Name="EntryAnswer" Text="{Binding Answer,Mode=TwoWay}" ...>
Это означает, что Answer
должно быть публичной собственностью внутри Question
. Вы уже поняли это правильно.
Когда вы реализуете его таким образом, в основном, единственное, что вы делаете, - заполняете модель представления и назначаете ее для BindingContext
вашей страницы. Если вы используете инфраструктуру MVVM, это может произойти автоматически.
В какой-то момент вы можете столкнуться с некоторыми проблемами, когда пользовательский интерфейс не обновляется, и вам придется реализовать интерфейс INotifyPropertyChanged
. Внимательно посмотрите, какой объект не обновляется на экране, и реализуйте интерфейс этого объекта вместе с необходимой сантехникой, но, как я вижу в этом коде, это сейчас не нужно. И, кроме того, вы правильно реализовали это в своем Question
прямо сейчас.
Надеюсь, это имеет смысл! В первый раз немного сложно обернуть голову, но как только вы это сделаете, это довольно просто!