Xamarin.Forms 命名空间
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
跨平台且受本机支持 UI 工具包。
类
结构
Color |
表示颜色并将颜色公开为 RGBA 和 HSL 值的类。 |
CornerRadius |
包含用于指定圆角半径的方法和属性。 |
FlexBasis |
用于表示绝对或相对元素大小的结构。 |
Font |
用于显示文本的字体。 |
GridLength |
用于定义网格 ColumnDefinition 和 RowDefinition 的大小(宽度/高度)。 |
LayoutOptions |
一个结构,其静态成员定义不同的对齐和扩展选项。 |
Point |
将二维点定义为一对双精度值的结构。 |
Rect |
跨平台且受本机支持 UI 工具包。 |
Rectangle |
使用双精度值定义矩形的结构。 |
Region |
表示 Xamarin.Forms UI 中的可视区域。 |
Size |
将高度和宽度定义为一对双精度值的结构。 |
SizeRequest |
定义最小值和最大值 Size 的结构。 |
Thickness |
结构使用双精度值定义 Rectangle 边缘的厚度。 |
Vec2 |
定义一对 X 和 Y 双精度值的结构。 |
接口
枚举
AbsoluteLayoutFlags |
用于修改如何在 AbsoluteLayout 中解释布局绑定的标志。 |
AccessKeyPlacement |
枚举访问键相对于其描述的控件的位置。 |
Aspect |
定义图像的显示方式。 |
BindingMode |
绑定的变更传播方向。 |
Button.ButtonContentLayout.ImagePosition |
枚举按钮内的图像位置。 |
ButtonsMask |
表示鼠标按钮的标志值。 |
ClearButtonVisibility |
跨平台且受本机支持 UI 工具包。 |
ConstraintType |
枚举,用于指定约束是相对于视图的常数还是相对于其父级的常数。 |
DataPackageOperation |
跨平台且受本机支持 UI 工具包。 |
DependencyFetchTarget |
枚举,指定 Get<T>(DependencyFetchTarget) 是否应返回对某个全局实例或新实例的引用。 |
EditorAutoSizeOption |
枚举值,用于控制编辑器是否会在用户输入时更改大小以适应输入内容。 |
EffectiveFlowDirection |
枚举指示是否已显式设置布局方向以及布局方向是否为从右到左的标志。 |
FlexAlignContent |
枚举控制多行或多列子元素的对齐方式的值。 |
FlexAlignItems |
枚举控制子元素对齐的值。 |
FlexAlignSelf |
枚举控制子元素是否会重写其父级应用的对齐特性及其重写方式。 |
FlexDirection |
枚举指定行和列的弹性布局方向(相对于设备区域设置的方向)的值。 |
FlexJustify |
枚举描述子元素在周围有额外空间时的对齐方式的值。 |
FlexPosition |
枚举值,该值用于控制在指定子元素的位置时如何解释布局坐标。 |
FlexWrap |
枚举值,用于控制是否以及如何包装 FlexLayout 中的项。 |
FlowDirection |
枚举控制视图布局方向的值。 |
FlyoutBehavior |
Shell 应用程序根菜单的模式枚举。 |
FlyoutDisplayOptions |
枚举 Shell 应用程序中浮出控件的显示模式。 |
FlyoutHeaderBehavior |
位于 FlyoutHeader 前面的模式枚举。 |
FlyoutLayoutBehavior |
跨平台且受本机支持 UI 工具包。 |
FontAttributes |
描述字体样式的枚举值。 |
GestureState |
指定手势的各种状态的枚举。 |
GestureStatus |
枚举可能的动作状态。 |
GridUnitType |
枚举控制如何为行和列定义解释 Value 属性的值。 |
IndicatorShape |
跨平台且受本机支持 UI 工具包。 |
InitializationFlags |
跨平台且受本机支持 UI 工具包。 |
ItemSizingStrategy |
跨平台且受本机支持 UI 工具包。 |
ItemsLayoutOrientation |
跨平台且受本机支持 UI 工具包。 |
ItemsUpdatingScrollMode |
跨平台且受本机支持 UI 工具包。 |
KeyboardFlags |
枚举控制大小写、拼写检查和建议行为的键盘选项标志。 |
LayoutAlignment |
表示 LayoutAlignment 的值。 |
LineBreakMode |
指定换行的各个选项的枚举。 |
ListViewCachingStrategy |
枚举 ListView 的缓存策略。 |
ListViewSelectionMode |
枚举控制是否可以选择列表视图中的项的值。 |
MasterBehavior |
枚举值,用于控制详细内容在母版-详细信息页中的显示方式。 |
MeasureFlags |
枚举值,这些值指示布局窗口时是否包括边距。 |
NamedSize |
表示预定义的字号。 |
OpenSwipeItem |
跨平台且受本机支持 UI 工具包。 |
OSAppTheme |
跨平台且受本机支持 UI 工具包。 |
PresentationMode |
跨平台且受本机支持 UI 工具包。 |
RelativeBindingSourceMode |
跨平台且受本机支持 UI 工具包。 |
ReturnType |
枚举返回按钮样式。 |
ScrollBarVisibility |
枚举显示滚动条的条件。 |
ScrollMode |
跨平台且受本机支持 UI 工具包。 |
ScrollOrientation |
指定垂直或水平滚动方向的枚举。 |
ScrollToMode |
枚举描述如何发出滚动请求的值。 |
ScrollToPosition |
枚举描述滚动请求的值。 |
SearchBoxVisibility |
跨平台且受本机支持 UI 工具包。 |
SelectionMode |
跨平台且受本机支持 UI 工具包。 |
SeparatorVisibility |
控制列表项分隔符可见性的枚举值。 |
ShellNavigationSource |
枚举 Shell 应用程序中导航事件的原因。 |
SnapPointsAlignment |
跨平台且受本机支持 UI 工具包。 |
SnapPointsType |
跨平台且受本机支持 UI 工具包。 |
StackOrientation |
StackLayout 可以具有的方向。 |
Stretch |
跨平台且受本机支持 UI 工具包。 |
SweepDirection |
跨平台且受本机支持 UI 工具包。 |
SwipeBehaviorOnInvoked |
跨平台且受本机支持 UI 工具包。 |
SwipeDirection |
枚举轻扫方向。 |
SwipeMode |
跨平台且受本机支持 UI 工具包。 |
TableIntent |
TableIntent 为呈现器提供有关如何使用表的提示。 |
TabsStyle |
枚举选项卡式页的选项卡样式。 |
TargetIdiom |
指示 Xamarin.Forms 正在处理的设备类型。 |
TargetPlatform |
指示当前正在使用的 OS Xamarin.Forms 类型。 |
TextAlignment |
枚举控制文本对齐方式的值。 |
TextDecorations |
标记定义文本效果的枚举。 |
TextTransform |
跨平台且受本机支持 UI 工具包。 |
TextType |
跨平台且受本机支持 UI 工具包。 |
ToolbarItemOrder |
指定 ToolbarItem 是显示在主工具栏曲面还是显示在辅工具栏曲面上的枚举。 |
ViewState |
已否决。 请勿使用。 |
WebNavigationEvent |
包含指示引发导航事件的原因的值。 |
WebNavigationResult |
枚举指示 Web 导航结果的值。 |
委托
注解
Xamarin.Forms 是一种跨平台、本机支持的 UI 工具包抽象,允许开发人员创建可在 Android、iOS 和Windows Phone之间共享的用户界面。 由于用户界面使用目标平台的本机控件,因此它们具有本机生成应用的外观以及重要的响应能力。
Xamarin.Forms 解决方案体系结构
跨平台项目
Xamarin.Forms 应用程序的用户体验通常在跨平台共享项目中定义, (可移植类库或共享项目) ,并结合特定于平台的项目,这些项目至少初始化本机平台呈现 (请注意以下平台代码示例中对 Forms.Init()
的调用) ,更一般地,以特定于平台的方式扩展用户体验和用户界面 (例如, 通过访问特定于平台的传感器或功能) 。
例如,开发人员可以创建一个跨平台 Xamarin.Forms Label ,并在共享项目中使用以下代码显示它:
public class App : Xamarin.Forms.Application
{
public App ()
{
MainPage = new ContentPage
{
Content = new Label
{
Text = "Welcome to Xamarin Forms!",
VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalOptions = LayoutOptions.CenterAndExpand,
},
};
}
}
此代码在目标平台上生成居中标签:
虽然具有更多有用用户界面的更复杂的布局更为典型,但此示例可用于清楚地说明 Xamarin.Forms 用于在目标平台上创建和显示代码的共享和特定于平台的代码。 当开发人员创建新的 Xamarin.Forms 项目时,以下讨论中的代码由 Visual Studio 在目标平台项目中创建。 在每种情况下,都会调用特定于 Forms.Init()
平台的方法,以在调用依赖于 Xamarin.Forms 的任何其他方法之前初始化表单。
iOS 平台代码
在 iOS 平台上,Visual Studio 将框架类 Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
的子类注册为应用程序的入口点,并立即调用 Xamarin.Forms.Forms.Init
。
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
}
Android 平台代码
Android 上的入口点是框架类 Xamarin.Forms.Platform.Android.FormsAppCompatActivity
的子类,其 OnCreate
方法必须在调用 Forms.Init
之前配置选项卡栏和工具栏并调用其 base
方法。
[Activity(Label = "HelloXamarinFormsWorld.Droid", Icon = "@drawable/icon", Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
}
}
UWP 代码
UWP 上 Xamarin.Forms 应用的入口点只是 UWP 平台项目中 的 中的 Windows.UI.Xaml.Application
App.xaml.cs
的构造函数。 但是,UWP 上的应用程序生命周期使得对 Forms.Init
的调用必须在 方法内 OnLaunched
进行,并且可防止多次运行。 必要的代码超出了本文档的范围,但鼓励好奇的开发人员创建测试 Xamarin.Forms 解决方案并研究文件中的代码 App.xaml.cs
以获取更多详细信息
Xamarin.Forms 中的元素
Xamarin.Forms 命名空间中的重要类型包括 Page、 View和 Layout。 Page通常对应于控制器对象 (Android 世界中的活动、iOS 世界中的 UIViewControllers) 、View具有控件或小组件的 ,以及 Layout其他 View上的 排列 View。 这些类型都派生自 Element。
Model-View-ViewModel 和 Xamarin.Forms
应用程序开发人员使用 Model-View-ViewModel (MVVM) 模式来创建 Xamarin.Forms 应用,将数据呈现和用户界面的关注点与数据存储和操作的关注点完全分开。 框架 Xamarin.Forms 通过在几个其他相关类型 BindableObject 中提供 和 BindableProperty 类来启用此功能。 继承自 BindableObject 的对象可以绑定到其他对象上的 类型 BindableProperty 成员。
维护 BindableObject 名称的 BindableProperty 字典以及与其相应绑定上下文的关联,即 BindableProperty 定义 的对象,以及应用程序开发人员通过 分配给 BindingContext 属性 Binding的对象。 有关详细信息,请参阅BindableObject。