从视图访问对象的 属性
Accessing object's property from View
我在 Models 文件夹中有一个 Booking class。当我导航到 class 时,我已经通过了 Booking 实例,现在如何从视图访问 Booking 的 属性?
我的视图模型:
public class BookingEditViewModel : ViewModelBase
{
public Booking Booking { get;set; }
public override void OnNavigatedTo(INavigationParameters parameters)
{
Booking = parameters.GetValue<Booking>("booking");
}
}
我的看法:
<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 的一部分,接下来我该怎么做才能访问预订的 属性?
编辑:
如果我只是在 class 的构造函数中向 Booking 属性 添加任何值,Label 将打印出这些值。
public BookingEditViewModel(BookingService bookingService, INavigationService navigationService) : base(navigationService)
{
this.bookingService = bookingService;
Booking = new Booking { Id = 999, CustomerId = 2222, };
}
所以问题似乎是当预订在 OnNavigatedTo 中更新时,更新不会传播回 UI。我已将 BindingMode 更改为 TwoWay,但仍然无法正常工作。我该如何解决?
好的,找到答案了。基本上我的问题与这个问题相同:
我只需要将 属性 更改为:
public Booking Booking
{
get => booking;
set => SetProperty(ref booking, value);
}
我在 Models 文件夹中有一个 Booking class。当我导航到 class 时,我已经通过了 Booking 实例,现在如何从视图访问 Booking 的 属性?
我的视图模型:
public class BookingEditViewModel : ViewModelBase
{
public Booking Booking { get;set; }
public override void OnNavigatedTo(INavigationParameters parameters)
{
Booking = parameters.GetValue<Booking>("booking");
}
}
我的看法:
<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 的一部分,接下来我该怎么做才能访问预订的 属性?
编辑: 如果我只是在 class 的构造函数中向 Booking 属性 添加任何值,Label 将打印出这些值。
public BookingEditViewModel(BookingService bookingService, INavigationService navigationService) : base(navigationService)
{
this.bookingService = bookingService;
Booking = new Booking { Id = 999, CustomerId = 2222, };
}
所以问题似乎是当预订在 OnNavigatedTo 中更新时,更新不会传播回 UI。我已将 BindingMode 更改为 TwoWay,但仍然无法正常工作。我该如何解决?
好的,找到答案了。基本上我的问题与这个问题相同:
我只需要将 属性 更改为:
public Booking Booking
{
get => booking;
set => SetProperty(ref booking, value);
}