Dependency Injection, frist UI Reworks
This commit is contained in:
parent
a9763be8d2
commit
fa82a4fbb3
@ -20,7 +20,9 @@ public class StarsDatabase(string DbPath) : DbContext
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Entities
|
#region IStarsDatabase Implementation
|
||||||
|
|
||||||
|
public DbContext DbContext => this;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// List of all Planets read.
|
/// List of all Planets read.
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using Avalonia;
|
using Avalonia;
|
||||||
|
using Splat;
|
||||||
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using CsvHelper.Configuration;
|
using CsvHelper.Configuration;
|
||||||
@ -19,6 +20,12 @@ sealed class Program
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
ModeDetector.OverrideModeDetector(Splat.ModeDetection.Mode.Run);
|
||||||
|
Locator.CurrentMutable.Register(
|
||||||
|
() => new StarsDatabase("stars.sqlite"),
|
||||||
|
typeof(StarsDatabase)
|
||||||
|
);
|
||||||
|
|
||||||
__createTestData();
|
__createTestData();
|
||||||
|
|
||||||
BuildAvaloniaApp()
|
BuildAvaloniaApp()
|
||||||
@ -36,13 +43,13 @@ sealed class Program
|
|||||||
|
|
||||||
public static void __createTestData ()
|
public static void __createTestData ()
|
||||||
{
|
{
|
||||||
using var db = new StarsDatabase("stars.sqlite");
|
using var db = Locator.Current.GetService<StarsDatabase>()!;
|
||||||
|
|
||||||
db.Database.EnsureDeleted();
|
db.Database.EnsureDeleted();
|
||||||
db.Database.EnsureCreated();
|
db.Database.EnsureCreated();
|
||||||
|
|
||||||
// Note: This sample requires the database to be created before running.
|
// Note: This sample requires the database to be created before running.
|
||||||
Console.WriteLine($"Database path: {db.DbPath}.");
|
// Console.WriteLine($"Database path: {db.DbPath}.");
|
||||||
|
|
||||||
Race r = new()
|
Race r = new()
|
||||||
{
|
{
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
<PackageReference Include="Avalonia.Fonts.Inter" 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.-->
|
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
|
||||||
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.1.3" />
|
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.1.3" />
|
||||||
|
<PackageReference Include="Splat" Version="15.1.1" />
|
||||||
<PackageReference Include="System.Reactive" Version="6.0.1" />
|
<PackageReference Include="System.Reactive" Version="6.0.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using StarsAssistant.Model;
|
using StarsAssistant.Model;
|
||||||
|
using Splat;
|
||||||
|
|
||||||
namespace StarsAssistant.ViewModels;
|
namespace StarsAssistant.ViewModels;
|
||||||
|
|
||||||
public partial class PlanetViewModel(Planet planet) : ViewModelBase
|
public partial class PlanetViewModel(Planet planet) : ViewModelBase
|
||||||
{
|
{
|
||||||
public static ObservableCollection<PlanetViewModel> LoadAll() {
|
public static ObservableCollection<PlanetViewModel> LoadAll() {
|
||||||
var context = new StarsDatabase("stars.sqlite");
|
using var db = Locator.Current.GetService<StarsDatabase>()!;
|
||||||
var result = new ObservableCollection<PlanetViewModel>();
|
var result = new ObservableCollection<PlanetViewModel>();
|
||||||
foreach (Planet planet in context.Planet.Where(p => p.OwnerId == "Atlantis").ToList())
|
foreach (Planet planet in db.Planet.Where(p => p.OwnerId == "Atlantis").ToList())
|
||||||
{
|
{
|
||||||
var vm = new PlanetViewModel(planet);
|
var vm = new PlanetViewModel(planet);
|
||||||
result.Add(vm);
|
result.Add(vm);
|
||||||
@ -24,4 +25,12 @@ public partial class PlanetViewModel(Planet planet) : ViewModelBase
|
|||||||
public string Owner => planet.OwnerId ?? String.Empty;
|
public string Owner => planet.OwnerId ?? String.Empty;
|
||||||
|
|
||||||
public int Value => planet.Value ?? 0;
|
public int Value => planet.Value ?? 0;
|
||||||
|
|
||||||
|
public int Population => planet.Population ?? 0;
|
||||||
|
|
||||||
|
public int SurfaceIronium => planet.SurfaceIronium ?? 0;
|
||||||
|
|
||||||
|
public int SurfaceBoranium => planet.SurfaceBoranium ?? 0;
|
||||||
|
|
||||||
|
public int SurfaceGermanium => planet.SurfaceGermanium ?? 0;
|
||||||
}
|
}
|
||||||
|
@ -19,18 +19,7 @@
|
|||||||
|
|
||||||
<TabControl>
|
<TabControl>
|
||||||
<TabItem Header="Home">
|
<TabItem Header="Home">
|
||||||
<StackPanel>
|
Welcome to Stars Assistant!
|
||||||
<Border Margin="5" CornerRadius="10" Background="LightBlue">
|
|
||||||
<TextBlock Margin="5" FontSize="24" HorizontalAlignment="Center" Text="{Binding Greeting}"></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>
|
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="DataGrid">
|
<TabItem Header="DataGrid">
|
||||||
<DataGrid ItemsSource="{Binding Planets}"
|
<DataGrid ItemsSource="{Binding Planets}"
|
||||||
|
@ -11,18 +11,4 @@ public partial class MainWindow : Window
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
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";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user