Xamarin.Forms 中的几个实用技巧
作者:互联网
启用XAML编译
在使用Xamarin.Forms新建内容XAML页时, 在类级别会出现声明的特性, 如下所示:
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ViewA : ContentView
{
public ViewA()
{
InitializeComponent();
}
}
那么该特性的作用是启用XAML编译, 这样在使用XAML时会大大提高应用中的性能, XAML 编译提供了很多好处:
- 它会执行 XAML 的编译时检查,从而可向用户通知任何错误。
- 它会消除 XAML 元素的某些负载和实例化时间。
- 它通过不再包含 .xaml 文件,来帮助减小最终程序集的文件大小。
默认情况下,在框架中禁用 XAML 编译。 但是,在新项目的模板中启用了它。 通过添加 XamlCompilation
属性,可以显式启用或禁用 (XamlCompilationOptions.Skip
) 在程序集和类级别上。
XAML 可以根据需要使用 XAML 编译器 (XAMLC) 直接编译为中间语言 (IL)。
在程序及级别的声明, 这样就不必要在每个XAML类当中声明, 声明的位置可以是任意位置, 一般来讲会放在比较明显的地方, 以便于统一管理, 声明如下:
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
使用编译绑定
编译绑定是一种在编译时告诉 Xamarin.Forms 绑定将使用的数据类型的方法。这意味着 Xamarin.Forms 不必在运行时使用任何反射来解析数据绑定。通过对任何项使用特殊属性,可以启用已编译的绑定。x:DataTypeVisualElement
使用编译绑定为你和你的应用提供了一些主要好处:
- 所有绑定表达式的编译时验证。
- 性能改进,因为绑定在编译时解析。
编译时验证, 可以在编译阶段检查非法声明、拼写错误。这是将收到错误。
下面的案例中, 试图将不存在的属性 Names 绑定在Lable上, 这是编译会提出相应的错误。
在此应用中,我们有一个数据绑定到 的 ListView。我们可以引入 的命名空间
xmlns:local="clr-namespace:App4"
然后, 给DataTemplate 指定其类型:
<ListView ItemsSource="{Binding Students}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Student">
<Label Text="{Binding Name}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
使用编译绑定的前提, 你需要启用XAML 编译选项
使用嵌入字体
从 Xamarin.Forms 4.5 开始,我们将让您的生活再次更轻松一些。只需三个简单的步骤,我们将添加一种可在iOS,Android和UWP中使用的字体。
1. 将字体文件(otf 或 ttf)添加到共享项目并将其标记为嵌入资源
只需将字体文件添加到项目中的任何文件夹,然后将“生成操作”设置为 。Samantha.ttf EmbeddedResource
2. 在共享项目中添加导出字体属性
最明显的地方是你的或.但是,由于该属性将在程序集级别注册此属性,因此您可以将其放在任何位置。属性的放置取决于您希望它对其他/未来开发人员的可见程度。App.xaml.cs``AssemblyInfo.cs
命名空间之外的任何位置都可以使用。只需添加此内容:
[assembly: ExportFont("`Samantha.ttf", Alias = "`Samantha")]
就是这样!现在,你已准备好在应用中使用字体。通过代码或 XAML,直接在控件上或通过样式。请注意,您不再需要查找后记字体名称。只需使用字体文件名即可。这将适用于所有平台!
<Label Text="Welcome to Xamarin.Forms!"
FontFamily="Samantha" FontSize="50"
HorizontalOptions="Center" VerticalOptions="CenterAndExpand" />
标签:Xamarin,实用技巧,XAML,绑定,Forms,编译,字体,使用 来源: https://www.cnblogs.com/zh7791/p/16143054.html