temporary
This commit is contained in:
		
							
								
								
									
										15
									
								
								GetStartedApp/App.axaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								GetStartedApp/App.axaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
<Application xmlns="https://github.com/avaloniaui"
 | 
			
		||||
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
             x:Class="GetStartedApp.App"
 | 
			
		||||
             xmlns:local="using:GetStartedApp"
 | 
			
		||||
             RequestedThemeVariant="Default">
 | 
			
		||||
             <!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
 | 
			
		||||
 | 
			
		||||
    <Application.DataTemplates>
 | 
			
		||||
        <local:ViewLocator/>
 | 
			
		||||
    </Application.DataTemplates>
 | 
			
		||||
  
 | 
			
		||||
    <Application.Styles>
 | 
			
		||||
        <FluentTheme />
 | 
			
		||||
    </Application.Styles>
 | 
			
		||||
</Application>
 | 
			
		||||
							
								
								
									
										28
									
								
								GetStartedApp/App.axaml.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								GetStartedApp/App.axaml.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
using Avalonia;
 | 
			
		||||
using Avalonia.Controls.ApplicationLifetimes;
 | 
			
		||||
using Avalonia.Markup.Xaml;
 | 
			
		||||
using GetStartedApp.ViewModels;
 | 
			
		||||
using GetStartedApp.Views;
 | 
			
		||||
 | 
			
		||||
namespace GetStartedApp;
 | 
			
		||||
 | 
			
		||||
public partial class App : Application
 | 
			
		||||
{
 | 
			
		||||
    public override void Initialize()
 | 
			
		||||
    {
 | 
			
		||||
        AvaloniaXamlLoader.Load(this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public override void OnFrameworkInitializationCompleted()
 | 
			
		||||
    {
 | 
			
		||||
        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
 | 
			
		||||
        {
 | 
			
		||||
            desktop.MainWindow = new MainWindow
 | 
			
		||||
            {
 | 
			
		||||
                DataContext = new MainWindowViewModel(),
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        base.OnFrameworkInitializationCompleted();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								GetStartedApp/Assets/avalonia-logo.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								GetStartedApp/Assets/avalonia-logo.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 172 KiB  | 
							
								
								
									
										25
									
								
								GetStartedApp/GetStartedApp.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								GetStartedApp/GetStartedApp.csproj
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <OutputType>WinExe</OutputType>
 | 
			
		||||
    <TargetFramework>net8.0</TargetFramework>
 | 
			
		||||
    <Nullable>enable</Nullable>
 | 
			
		||||
    <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
 | 
			
		||||
    <ApplicationManifest>app.manifest</ApplicationManifest>
 | 
			
		||||
    <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Folder Include="Models\" />
 | 
			
		||||
    <AvaloniaResource Include="Assets\**" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <PackageReference Include="Avalonia" Version="11.0.10" />
 | 
			
		||||
    <PackageReference Include="Avalonia.Desktop" Version="11.0.10" />
 | 
			
		||||
    <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.10" />
 | 
			
		||||
    <PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.10" />
 | 
			
		||||
    <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
 | 
			
		||||
    <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.10" />
 | 
			
		||||
    <PackageReference Include="Avalonia.ReactiveUI" Version="11.0.10" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										23
									
								
								GetStartedApp/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								GetStartedApp/Program.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
using Avalonia;
 | 
			
		||||
using Avalonia.ReactiveUI;
 | 
			
		||||
using System;
 | 
			
		||||
 | 
			
		||||
namespace GetStartedApp;
 | 
			
		||||
 | 
			
		||||
sealed class Program
 | 
			
		||||
{
 | 
			
		||||
    // Initialization code. Don't use any Avalonia, third-party APIs or any
 | 
			
		||||
    // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
 | 
			
		||||
    // yet and stuff might break.
 | 
			
		||||
    [STAThread]
 | 
			
		||||
    public static void Main(string[] args) => BuildAvaloniaApp()
 | 
			
		||||
        .StartWithClassicDesktopLifetime(args);
 | 
			
		||||
 | 
			
		||||
    // Avalonia configuration, don't remove; also used by visual designer.
 | 
			
		||||
    public static AppBuilder BuildAvaloniaApp()
 | 
			
		||||
        => AppBuilder.Configure<App>()
 | 
			
		||||
            .UsePlatformDetect()
 | 
			
		||||
            .WithInterFont()
 | 
			
		||||
            .LogToTrace()
 | 
			
		||||
            .UseReactiveUI();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										33
									
								
								GetStartedApp/ViewLocator.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								GetStartedApp/ViewLocator.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
using System;
 | 
			
		||||
using Avalonia.Controls;
 | 
			
		||||
using Avalonia.Controls.Templates;
 | 
			
		||||
using GetStartedApp.ViewModels;
 | 
			
		||||
 | 
			
		||||
namespace GetStartedApp;
 | 
			
		||||
 | 
			
		||||
public class ViewLocator : IDataTemplate
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    public Control? Build(object? data)
 | 
			
		||||
    {
 | 
			
		||||
        if (data is null)
 | 
			
		||||
            return null;
 | 
			
		||||
        
 | 
			
		||||
        var name = data.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal);
 | 
			
		||||
        var type = Type.GetType(name);
 | 
			
		||||
 | 
			
		||||
        if (type != null)
 | 
			
		||||
        {
 | 
			
		||||
            var control = (Control)Activator.CreateInstance(type)!;
 | 
			
		||||
            control.DataContext = data;
 | 
			
		||||
            return control;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        return new TextBlock { Text = "Not Found: " + name };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public bool Match(object? data)
 | 
			
		||||
    {
 | 
			
		||||
        return data is ViewModelBase;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								GetStartedApp/ViewModels/MainWindowViewModel.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								GetStartedApp/ViewModels/MainWindowViewModel.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
namespace GetStartedApp.ViewModels;
 | 
			
		||||
 | 
			
		||||
public class MainWindowViewModel : ViewModelBase
 | 
			
		||||
{
 | 
			
		||||
#pragma warning disable CA1822 // Mark members as static
 | 
			
		||||
    public string Greeting => "Welcome to asdf Avalonia!";
 | 
			
		||||
#pragma warning restore CA1822 // Mark members as static
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								GetStartedApp/ViewModels/ViewModelBase.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								GetStartedApp/ViewModels/ViewModelBase.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
using ReactiveUI;
 | 
			
		||||
 | 
			
		||||
namespace GetStartedApp.ViewModels;
 | 
			
		||||
 | 
			
		||||
public class ViewModelBase : ReactiveObject
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										31
									
								
								GetStartedApp/Views/MainWindow.axaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								GetStartedApp/Views/MainWindow.axaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
<Window xmlns="https://github.com/avaloniaui"
 | 
			
		||||
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
        xmlns:vm="using:GetStartedApp.ViewModels"
 | 
			
		||||
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 | 
			
		||||
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
			
		||||
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
 | 
			
		||||
        x:Class="GetStartedApp.Views.MainWindow"
 | 
			
		||||
        x:DataType="vm:MainWindowViewModel"
 | 
			
		||||
        Title="GetStartedApp">
 | 
			
		||||
        <!-- Icon="/Assets/avalonia-logo.ico" -->
 | 
			
		||||
 | 
			
		||||
    <Design.DataContext>
 | 
			
		||||
        <!-- This only sets the DataContext for the previewer in an IDE,
 | 
			
		||||
             to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
 | 
			
		||||
        <vm:MainWindowViewModel/>
 | 
			
		||||
    </Design.DataContext>
 | 
			
		||||
 | 
			
		||||
    <StackPanel>
 | 
			
		||||
        <Border Margin="5" CornerRadius="10" Background="LightBlue">
 | 
			
		||||
            <TextBlock Margin="5" FontSize="24" HorizontalAlignment="Center" Text="Temperature Converter"></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 Grid.Row="0" Grid.Column="1" Margin="0 5" Text="0" Name="celsius"/>
 | 
			
		||||
            <Label Grid.Row="1" Grid.Column="0" Margin="10">Fahrenheit</Label>
 | 
			
		||||
            <TextBox Grid.Row="1"  Grid.Column="1" Margin="0 5" Text="0" Name="fahrenheit"/>
 | 
			
		||||
            <Button Grid.Row="2" Grid.Column="1" Margin="0 5" Click="ButtonClicked">Calculate</Button>
 | 
			
		||||
        </Grid>
 | 
			
		||||
  </StackPanel>
 | 
			
		||||
 | 
			
		||||
</Window>
 | 
			
		||||
							
								
								
									
										28
									
								
								GetStartedApp/Views/MainWindow.axaml.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								GetStartedApp/Views/MainWindow.axaml.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
using Avalonia.Controls;
 | 
			
		||||
using Avalonia.Interactivity;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System;
 | 
			
		||||
 | 
			
		||||
namespace GetStartedApp.Views;
 | 
			
		||||
 | 
			
		||||
public partial class MainWindow : Window
 | 
			
		||||
{
 | 
			
		||||
    public MainWindow()
 | 
			
		||||
    {
 | 
			
		||||
        InitializeComponent();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void ButtonClicked(object source, RoutedEventArgs args)
 | 
			
		||||
    {
 | 
			
		||||
        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";
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								GetStartedApp/app.manifest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								GetStartedApp/app.manifest
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
 | 
			
		||||
  <!-- This manifest is used on Windows only.
 | 
			
		||||
       Don't remove it as it might cause problems with window transparency and embedded controls.
 | 
			
		||||
       For more details visit https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests -->
 | 
			
		||||
  <assemblyIdentity version="1.0.0.0" name="GetStartedApp.Desktop"/>
 | 
			
		||||
 | 
			
		||||
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
 | 
			
		||||
    <application>
 | 
			
		||||
      <!-- A list of the Windows versions that this application has been tested on
 | 
			
		||||
           and is designed to work with. Uncomment the appropriate elements
 | 
			
		||||
           and Windows will automatically select the most compatible environment. -->
 | 
			
		||||
 | 
			
		||||
      <!-- Windows 10 -->
 | 
			
		||||
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
 | 
			
		||||
    </application>
 | 
			
		||||
  </compatibility>
 | 
			
		||||
</assembly>
 | 
			
		||||
		Reference in New Issue
	
	Block a user