Перейти к основному содержимому
Версия: 11.0.0

Code With Controls

На этой странице вы узнаете, как обновить информацию температуры в Фаренгейтах, при изменении значения по Цельсия после каждого нажатия кнопки.

Именованные элементы (Control)

Когда Avalonia создает основное окно при выполнении программы, она также создает объекты для каждого Controls, определенного в окне. Для получения доступа к этим Controls из кода, необходимо указать их имена.

Для добавления имени, выполните следующую последовательность действий:

  • Завершите работу приложения, если оно запущено.
  • Найдите тег TextBox для Celsius.
  • Добавьте атрибут, как показано ниже:
<TextBox ... Name="celsius"/>
  • Повторите действия для Fahrenheit:
<TextBox ... Name="fahrenheit"/>

Получение значения Control в Code-Behind

Для демонстрации доступа к значению при изменении celsius, выполните следующие действия:

  • Переключтесь на файл MainWindows.axaml.cs.
  • Найдите событие ButtonClicked.
  • Измените вывод Debug.WriteLine, чтобы увидеть изменение свойства celsius в консоли, например:
Debug.WriteLine($"Click! Celsius={celsius.Text}");
  • Запустите приложение и убедитесь, что при изменении значения Celsius, в окне отладки выходит сообщение.

Изменение значения Control в Code-Behind

Для использования формулы преобразования из температуры по Цельсия в градусы Фаренгейта, сперва необходимо преобразовать введенный текст по Цельсия в число, а затем использовать формулу:

Tf = Tc * (9/5) + 32

To add the conversion formula, follow this procedure:

  • Найдите событие ButtonClicked.
  • Добавьте проверку вводимого текста на число.
  • Добавьте формулу пересчета в Фаренгейты.
  • Получившееся значение укажите в Control Fahrenheit.
  • Запустите приложение и проверьте результат.

Одна из возможных реализация:

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";
}

Вы можете свериться с таблицей готовых значений:

CelsiusFarenheit
-1014.0
032.0
1050.0
2169.8
2577.0
3289.6

Упражнения

Теперь, когда вы умеете использовать обработку событий для получения и изменения свойств Controls во время выполнения программы, можно попробовать выболнить некоторые упражнения самостоятельно:

  • Отключить отображение сетки.
  • Запретите пользовательский ввод для Farenheit, установив атрибут IsReadOnly.
  • Добавьте пересчет поля Farenheit по мере изменения значения поля Celsius.
к сведению

Подробную информацию о встроенных Controls, событиях и атрибутах, см. здесь.