Xamarin.Forms 条目教程
开始演练本教程的前提条件为已成功完成以下教程:
- 生成第一个 Xamarin.Forms 应用快速入门。
- StackLayout教程。
在本教程中,你将了解:
- 在 XAML 中创建 Xamarin.Forms
Entry
。 - 响应
Entry
中更改的文本。 - 自定义
Entry
的行为。
你将使用 Visual Studio 2019 或 Visual Studio for Mac 创建一个简单的应用程序,演示如何自定义 Entry
的行为。 以下屏幕截图显示了最终的应用程序:
还将使用适用于 Xamarin.Forms 的 XAML 热重载查看 UI 更改,而无需重新生成应用程序。
创建条目
若要完成本教程,应使用 Visual Studio 2019(最新版本),且安装了“使用 .NET 的移动开发”工作负载。 此外,还需要一个匹配的 Mac,用于在 iOS 上生成教程应用程序。 有关安装 Xamarin 平台的信息,请参阅安装 Xamarin。 有关将 Visual Studio 2019 连接到 Mac 生成主机的信息,请参阅通过“与 Mac 配对”进行 Xamarin.iOS 开发。
启动 Visual Studio,新建名为 EntryTutorial 的 Xamarin.Forms 空白应用。
重要
本教程中的 C# 和 XAML 片段要求将解决方案命名为 EntryTutorial。 使用不同的名称会导致:将本教程中的代码复制到解决方案中时出现生成错误。
有关创建的 .NET Standard 库的详细信息,请参阅 Xamarin.FormsXamarin.Forms 快速入门的深入探讨中的 Xamarin.Forms 应用程序剖析。
在“解决方案资源管理器”的 EntryTutorial 项目中,双击 MainPage.xaml 将其打开。 然后在 MainPage.xaml 中,删除所有模板代码,替换为以下代码:
<?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="EntryTutorial.MainPage"> <StackLayout Margin="20,35,20,20"> <Entry Placeholder="Enter text" /> </StackLayout> </ContentPage>
此代码以声明方式定义页面的用户界面,该界面由
StackLayout
中的Entry
组成。Entry.Placeholder
属性指定第一次显示Entry
时显示的占位符文本。在 Visual Studio 工具栏中,按“开始”按钮(类似“播放”按钮的三角形按钮),启动所选远程 iOS 模拟器或 Android Emulator 内的应用程序 :
在 Visual Studio 中停止应用程序。
响应文本更改
在“MainPage.xaml”中,修改
Entry
声明,以便为TextChanged
和Completed
事件设置处理程序:<Entry Placeholder="Enter text" TextChanged="OnEntryTextChanged" Completed="OnEntryCompleted" />
此代码将
TextChanged
事件设置为名为OnEntryTextChanged
的事件处理程序,将Completed
事件设置为名为OnEntryCompleted
的事件处理程序。 这两个事件处理程序都将在下一步中进行创建。在“解决方案资源管理器”的 EntryTutorial 项目中,展开“MainPage.xaml”,然后双击“MainPage.xaml.cs”将其打开 。 然后在 MainPage.xaml.cs 中,将
OnEntryTextChanged
和OnEntryCompleted
事件处理程序添加到类 :void OnEntryTextChanged(object sender, TextChangedEventArgs e) { string oldText = e.OldTextValue; string newText = e.NewTextValue; } void OnEntryCompleted(object sender, EventArgs e) { string text = ((Entry)sender).Text; }
当
Entry
中的文本更改时,将执行OnEntryTextChanged
方法。sender
参数是负责触发TextChanged
事件的Entry
对象,还可用于访问Entry
对象。TextChangedEventArgs
参数提供了文本更改之前和之后的旧文本值和新文本值。使用返回键完成
Entry
中的文本时,将执行OnEntryCompleted
方法。sender
参数是负责触发TextChanged
事件的Entry
对象,还可用于访问Entry
对象。在 Visual Studio 工具栏中,按“开始”按钮(类似“播放”按钮的三角形按钮),启动所选远程 iOS 模拟器或 Android Emulator 内的应用程序 :
在两个事件处理程序中设置断点,向
Entry
输入文本并观察TextChanged
和Completed
事件触发。有关
Entry
事件的详细信息,请参阅 Xamarin.Forms 条目指南中的事件和交互。
自定义行为
在 MainPage.xaml 中,修改
Entry
声明以自定义其行为:<Entry Placeholder="Enter password" MaxLength="15" IsSpellCheckEnabled="false" IsTextPredictionEnabled="false" IsPassword="true" />
此代码设置用于自定义
Entry
行为的属性。MaxLength
属性限制允许的Entry
输入长度,将IsSpellCheckEnabled
属性设置为false
以禁用拼写检查。 同样,将IsTextPredictionEnabled
属性设置为false
以禁用文本预测和自动文本预测。 此外,IsPassword
属性确保使用密码字符(黑色圆圈)对输入的字符进行掩码。注意
对于某些文本输入场景(例如输入密码),拼写检查和文本预测提供的体验并不太好,因此应禁用它们。
如果应用程序仍在运行,请保存对文件所做的更改,应用程序用户界面将自动在模拟器或仿真器中更新。 否则,请在 Visual Studio 工具栏中,按“开始”按钮(类似“播放”按钮的三角形按钮),启动所选远程 iOS 模拟器或 Android Emulator 内的应用程序。 在
Entry
中输入文本,观察每个字符是否被替换成密码掩码字符并且可输入的最大字符数是否为 15:在 Visual Studio 中停止应用程序。
有关自定义
Entry
行为的详细信息,请参阅 Xamarin.Forms 条目指南。
恭喜!
祝贺你完成了本教程的学习,在本教程中你学习了如何:
- 在 XAML 中创建 Xamarin.Forms
Entry
。 - 响应
Entry
中更改的文本。 - 自定义
Entry
的行为。
后续步骤
若要深入了解使用 Xamarin.Forms 创建移动应用程序的基础知识,请继续学习“编辑器”教程。
编辑器教程
相关链接
你有关于此部分的问题? 如果有,请向我们提供反馈,以便我们对此部分作出改进。