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";
}
Вы можете свериться с таблицей готовых значений:
Celsius | Farenheit |
---|---|
-10 | 14.0 |
0 | 32.0 |
10 | 50.0 |
21 | 69.8 |
25 | 77.0 |
32 | 89.6 |
Упражнения
Теперь, когда вы умеете использовать обработку событий для получения и изменения свойств Controls во время выполнения программы, можно попробовать выболнить некоторые упражнения самостоятельно:
- Отключить отображение сетки.
- Запретите пользовательский ввод для Farenheit, установив атрибут
IsReadOnly
. - Добавьте пересчет поля Farenheit по мере изменения значения поля Celsius.
Подробную информацию о встроенных Controls, событиях и атрибутах, см. здесь.