跳到主要内容
版本:11.0.0

用代码修改控件

您将在此处实现的操作是在点击按钮时,使用celsius控件的值和一个简单的公式来更新华氏温度控件。

控件名称

当Avalonia在运行时创建主窗口时,它还会为窗口中定义的每个控件创建对象。您的代码可以在运行时访问这些控件,但是为了访问它们,您需要一些控件名称。

要添加一些控件名称,请按照以下步骤进行操作:

  • 如果应用程序正在运行,请停止它。
  • 找到摄氏度的TextBox
  • 添加name属性,如下所示:
<TextBox ... Name="celsius"/>
  • 对于华氏度输入,重复上述步骤:
<TextBox ... Name="fahrenheit"/>

在代码后台获取控件值

为了演示如何访问celsius输入的文本值,请按照以下步骤进行操作:

  • 切换到MainWindow.axaml.cs代码后台文件。
  • 找到ButtonClicked事件处理程序。
  • 修改Debug语句以显示celsius输入的文本属性,如下所示:
Debug.WriteLine($"Click! Celsius={celsius.Text}");
  • 运行应用程序,确认您可以在调试窗口中看到摄氏度的值。

在代码后台设置控件值

为了使用将摄氏温度转换为华氏温度的简单公式,您首先需要确保摄氏度输入文本转换为数字。然后,公式为:

Tf = Tc * (9/5) + 32

要添加转换公式,请按照以下步骤进行操作:

  • 找到ButtonClicked事件处理程序。
  • 修改事件处理程序中的代码,以检查摄氏度输入文本是否可以转换为数字。
  • 修改代码以包含转换公式。
  • 将华氏度输入的文本更新为转换公式的结果。
  • 运行应用程序,检查您的工作。

以下是上述操作的一种实现方式:

if (Double.TryParse(celsius.Text, out double C))
{
var F = C * (9d / 5d) + 32;
fahrenheit.Text = F.ToString("0.0");
}
else
{
celsius.Text = "0";
fahrenheit.Text = "0";
}

您可以使用以下转换表来检查您的工作:

摄氏度华氏度
-1014.0
032.0
1050.0
2169.8
2577.0
3289.6

练习

  • 您现在已经使用事件处理程序在运行时获取和设置控件属性。您现在可以尝试一些练习:
  • 停止显示网格线(简单)。
  • 通过设置IsReadOnly属性,阻止用户更改华氏度输入的文本(简单)。
  • 当用户输入摄氏度时,实时计算转换结果(中等)。
信息

有关Avalonia内置控件、事件和属性的完整信息,请参阅此处的控件参考部分。