Доступ к свойству объекта из View - PullRequest
0 голосов
/ 23 марта 2019

У меня есть класс бронирования внутри папки Models. Я уже прошел экземпляр Booking при переходе к классу, теперь как мне получить доступ к свойству Booking из представления?

Моя ViewModel:

public class BookingEditViewModel : ViewModelBase
{
    public Booking Booking { get;set; }

    public override void OnNavigatedTo(INavigationParameters parameters)
    {
        Booking = parameters.GetValue<Booking>("booking");
    }
}

My View:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
            xmlns:booking="clr-namespace:HelloWorldPrism.Models"
            prism:ViewModelLocator.AutowireViewModel="True"
            x:Class="HelloWorldPrism.Views.BookingEdit">

    <StackLayout>
        <Label Text="{Binding Booking.Id}"/>
        <Label Text="{Binding Booking.CustomerId}"/>
    </StackLayout>
</ContentPage>

Моя модель:

public class Booking
{
    public int Id { get; set; }
    public int CustomerId { get; set; }
}

Я добавил пространство имен Models как часть xmlns. Что мне делать дальше, чтобы получить доступ к свойству Booking?

Edit: Если я просто добавлю какое-либо значение к свойству Booking внутри конструктора класса, Label выведет значения.

    public BookingEditViewModel(BookingService bookingService, INavigationService navigationService) : base(navigationService)
    {
        this.bookingService = bookingService;
        Booking = new Booking { Id = 999, CustomerId = 2222, };
    }

Таким образом, проблема, по-видимому, заключается в том, что при обновлении бронирования в OnNavigatedTo обновление не распространяется обратно в пользовательский интерфейс. Я изменил BindingMode на TwoWay, все еще не работает. Как мне это решить?

1 Ответ

0 голосов
/ 23 марта 2019

Хорошо, нашел ответ.В основном моя проблема такая же, как и в этом вопросе: Представление Prism Xamarin Forms не обновляется после изменения модели в OnNavigatedTo

Мне просто нужно изменить это свойство на:

    public Booking Booking
    {
        get => booking;
        set => SetProperty(ref booking, value);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...