【发布时间】:2020-04-19 05:50:38
【问题描述】:
我不清楚 prism 是否支持编译绑定。它是一个非常好的功能,可以避免反射并加快页面的加载速度。
希望 Brian Lagunas 或 Dan Siegel 能回答这个问题。
有人可以澄清一下 prism 是否支持编译绑定以及如何做到这一点,或者它是否神奇地做到了,或者我们是否需要手动设置 bindingcontext。
任何人都将不胜感激?
更新了 noddy 示例
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="PrismCompiledBinding.Views.MainPage"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:models="clr-namespace:PrismCompiledBinding.Models">
<!--x:DataType="ViewModel:MainPageViewModel"-->
<!--mc:Ignorable="d"-->
<ContentPage.Content>
<ListView
ItemsSource="{Binding Monkeys}"
SeparatorVisibility="None"
VerticalOptions="FillAndExpand">
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:Monkey">
<ViewCell>
<StackLayout
Padding="20,10,0,10"
Orientation="Horizontal"
Spacing="20"
VerticalOptions="FillAndExpand">
<Label
FontSize="Medium"
Text="{Binding Name}"
TextColor="Black"
VerticalOptions="Center" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage.Content>
</ContentPage>
using System.Collections.ObjectModel;
using Prism.Navigation;
using PrismCompiledBinding.Models;
namespace PrismCompiledBinding.ViewModels
{
public class MainPageViewModel : ViewModelBase
{
public MainPageViewModel(INavigationService navigationService)
: base(navigationService)
{
Monkeys = GetMonkeys();
}
private ObservableCollection<Monkey> monkeys;
public ObservableCollection<Monkey> Monkeys
{
get => monkeys;
set => SetProperty(ref monkeys, value);
}
private ObservableCollection<Monkey> GetMonkeys()
{
ObservableCollection<Monkey> list=new ObservableCollection<Monkey>();
list.Add(new Monkey
{
Name = "Baboon",
Location = "Africa & Asia",
Details =
"Baboons are African and Arabian Old World monkeys belonging to the genus Papio, part of the subfamily Cercopithecinae.",
});
list.Add(new Monkey
{
Name = "Capuchin Monkey",
Location = "Central & South America",
Details =
"The capuchin monkeys are New World monkeys of the subfamily Cebinae. Prior to 2011, the subfamily contained only a single genus, Cebus.",
});
return list;
}
}
}
public class Monkey
{
public string Name { get; set; }
public string Location { get; set; }
public string Details { get; set; }
}
谢谢
【问题讨论】:
标签: xamarin.forms prism