安装
安装.net 8
安装avalonia模板
dotnet new install Avalonia.Templates
创建项目
dotnet new avalonia.app -o GetStartedApp
安装c# dev kit
插件和Avalonia for VSCode Community
dotnet run
运行
修改代码
MainWindow.axaml
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="200" d:DesignHeight="450"
x:Class="GetStartedApp.MainWindow"
Title="GetStartedApp">
<TextBlock Text="My Text" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Window>
继续修改代码
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="200" d:DesignHeight="450"
x:Class="GetStartedApp.MainWindow"
Title="GetStartedApp">
<Button HorizontalAlignment="Center">Calculate</Button>
</Window>
增加布局
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="200" d:DesignHeight="450"
x:Class="GetStartedApp.MainWindow"
Title="GetStartedApp">
<StackPanel>
<Border Margin="5"
CornerRadius="10"
Background="LightBlue">
<TextBlock Margin="5"
FontSize="24"
HorizontalAlignment="Center"
Text="温度转换器">
</TextBlock>
</Border>
<Grid ShowGridLines="True" Margin="5"
ColumnDefinitions="120, 100"
RowDefinitions="Auto, Auto, Auto">
<Label Grid.Row="0" Grid.Column="0" Margin="10">Celsius</Label>
<TextBox Name="celsius" Grid.Row="0" Grid.Column="1" Margin="0 5" Text="0"/>
<Label Grid.Row="1" Grid.Column="0" Margin="10">Fahrenheit</Label>
<TextBox Name="fahrenheit" Grid.Row="1" Grid.Column="1" Margin="0 5" Text="0"/>
<Button Grid.Row="2" Grid.Column="1" Margin="0 5" Click="ButtonClicked">Calculate</Button>
</Grid>
</StackPanel>
</Window>
绑定点击事件,修改MainWindow.axaml.cs
public void ButtonClicked(object source, RoutedEventArgs args)
{
Debug.WriteLine("Click!");
Debug.WriteLine($"Click! Celsius={celsius.Text}");
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";
}
}