Setup Test UI and Added Prototype DataGrid
This commit is contained in:
parent
2a55193289
commit
da94963c4f
@ -11,5 +11,6 @@
|
|||||||
|
|
||||||
<Application.Styles>
|
<Application.Styles>
|
||||||
<FluentTheme />
|
<FluentTheme />
|
||||||
|
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
|
||||||
</Application.Styles>
|
</Application.Styles>
|
||||||
</Application>
|
</Application>
|
@ -2,7 +2,7 @@
|
|||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using CSV = CsvHelper.Configuration.Attributes;
|
using CSV = CsvHelper.Configuration.Attributes;
|
||||||
|
|
||||||
namespace net.nehmer.sa.model;
|
namespace net.nehmer.sa.Model;
|
||||||
|
|
||||||
public class Planet
|
public class Planet
|
||||||
{
|
{
|
||||||
|
@ -3,7 +3,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
|
|
||||||
namespace net.nehmer.sa.model;
|
namespace net.nehmer.sa.Model;
|
||||||
|
|
||||||
public class StarsDatabase(string DbPath) : DbContext
|
public class StarsDatabase(string DbPath) : DbContext
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.ReactiveUI;
|
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using CsvHelper.Configuration;
|
||||||
|
using CsvHelper;
|
||||||
|
using net.nehmer.sa.Model;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
|
||||||
namespace net.nehmer.sa;
|
namespace net.nehmer.sa;
|
||||||
|
|
||||||
@ -10,16 +16,49 @@ sealed class Program
|
|||||||
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
|
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
|
||||||
// yet and stuff might break.
|
// yet and stuff might break.
|
||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main(string[] args) => BuildAvaloniaApp()
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
// __createTestData();
|
||||||
|
|
||||||
|
BuildAvaloniaApp()
|
||||||
.StartWithClassicDesktopLifetime(args);
|
.StartWithClassicDesktopLifetime(args);
|
||||||
|
}
|
||||||
|
|
||||||
// Avalonia configuration, don't remove; also used by visual designer.
|
// Avalonia configuration, don't remove; also used by visual designer.
|
||||||
public static AppBuilder BuildAvaloniaApp()
|
public static AppBuilder BuildAvaloniaApp()
|
||||||
=> AppBuilder.Configure<App>()
|
=> AppBuilder.Configure<App>()
|
||||||
.UsePlatformDetect()
|
.UsePlatformDetect()
|
||||||
.WithInterFont()
|
.WithInterFont()
|
||||||
.LogToTrace()
|
.LogToTrace();
|
||||||
.UseReactiveUI();
|
|
||||||
|
|
||||||
|
public static void __createTestData ()
|
||||||
|
{
|
||||||
|
using var db = new StarsDatabase("stars.sqlite");
|
||||||
|
|
||||||
|
db.Database.EnsureDeleted();
|
||||||
|
db.Database.EnsureCreated();
|
||||||
|
|
||||||
|
// Note: This sample requires the database to be created before running.
|
||||||
|
Console.WriteLine($"Database path: {db.DbPath}.");
|
||||||
|
|
||||||
|
var config = CsvConfiguration.FromAttributes<Planet>(CultureInfo.InvariantCulture);
|
||||||
|
config.Delimiter = "\t";
|
||||||
|
config.Escape = '\0';
|
||||||
|
config.MissingFieldFound = null;
|
||||||
|
|
||||||
|
using (var reader = new StreamReader("/home/torben/goingth/GOINGTH.p1", System.Text.Encoding.Latin1))
|
||||||
|
using (var csv = new CsvReader(reader, config))
|
||||||
|
{
|
||||||
|
List<Planet> records = csv.GetRecords<Planet>().ToList();
|
||||||
|
foreach (Planet p in records)
|
||||||
|
{
|
||||||
|
db.Add(p);
|
||||||
|
}
|
||||||
|
db.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,12 +23,12 @@
|
|||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.7" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.7" />
|
||||||
|
|
||||||
<PackageReference Include="Avalonia" Version="11.0.10" />
|
<PackageReference Include="Avalonia" Version="11.0.10" />
|
||||||
|
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.0.10" />
|
||||||
<PackageReference Include="Avalonia.Desktop" Version="11.0.10" />
|
<PackageReference Include="Avalonia.Desktop" Version="11.0.10" />
|
||||||
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.10" />
|
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.10" />
|
||||||
<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.0.10" />
|
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.10" />
|
||||||
<PackageReference Include="Avalonia.ReactiveUI" Version="11.0.10" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
namespace net.nehmer.sa.ViewModels;
|
using System.Collections.ObjectModel;
|
||||||
|
|
||||||
public class MainWindowViewModel : ViewModelBase
|
namespace net.nehmer.sa.ViewModels;
|
||||||
|
|
||||||
|
public partial class MainWindowViewModel : ViewModelBase
|
||||||
{
|
{
|
||||||
#pragma warning disable CA1822 // Mark members as static
|
#pragma warning disable CA1822 // Mark members as static
|
||||||
public string Greeting => "Welcome to Stars Assistant!";
|
public string Greeting => "Welcome to Stars Assistant!";
|
||||||
#pragma warning restore CA1822 // Mark members as static
|
#pragma warning restore CA1822 // Mark members as static
|
||||||
|
|
||||||
|
public ObservableCollection<PlanetViewModel> Planets { get; } = PlanetViewModel.LoadAll();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
26
Stars Assistant/ViewModels/PlanetViewModel.cs
Normal file
26
Stars Assistant/ViewModels/PlanetViewModel.cs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using net.nehmer.sa.Model;
|
||||||
|
|
||||||
|
namespace net.nehmer.sa.ViewModels;
|
||||||
|
|
||||||
|
public partial class PlanetViewModel(Planet planet) : ViewModelBase
|
||||||
|
{
|
||||||
|
public static ObservableCollection<PlanetViewModel> LoadAll() {
|
||||||
|
var context = new StarsDatabase("stars.sqlite");
|
||||||
|
var result = new ObservableCollection<PlanetViewModel>();
|
||||||
|
foreach (Planet planet in context.Planets.ToList())
|
||||||
|
{
|
||||||
|
var vm = new PlanetViewModel(planet);
|
||||||
|
result.Add(vm);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly Planet planet = planet;
|
||||||
|
|
||||||
|
public string Name => planet.Name;
|
||||||
|
|
||||||
|
public string Owner => planet.Owner ?? String.Empty;
|
||||||
|
|
||||||
|
public int Value => planet.Value ?? 0;
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
using ReactiveUI;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
|
||||||
namespace net.nehmer.sa.ViewModels;
|
namespace net.nehmer.sa.ViewModels;
|
||||||
|
|
||||||
public class ViewModelBase : ReactiveObject
|
public class ViewModelBase : ObservableObject
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,26 @@
|
|||||||
<TextBox Grid.Row="1" Grid.Column="1" Margin="0 5" Text="0" Name="fahrenheit"/>
|
<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>
|
<Button Grid.Row="2" Grid.Column="1" Margin="0 5" Click="ButtonClicked">Calculate</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
<DataGrid Margin="20" ItemsSource="{Binding Planets}"
|
||||||
|
AutoGenerateColumns="True" IsReadOnly="True"
|
||||||
|
GridLinesVisibility="All"
|
||||||
|
BorderThickness="1" BorderBrush="Gray">
|
||||||
|
</DataGrid>
|
||||||
|
|
||||||
|
<!-- ScrollViewer>
|
||||||
|
<ItemsControl ItemsSource="{Binding Planets}">
|
||||||
|
<ItemsControl.ItemTemplate>
|
||||||
|
<DataTemplate DataType="vm:PlanetViewModel">
|
||||||
|
<Grid ColumnDefinitions="200, 100, 50">
|
||||||
|
<TextBlock Grid.Column="0" Text="{Binding Name}"/>
|
||||||
|
<TextBlock Grid.Column="1" Text="{Binding Owner}"/>
|
||||||
|
<TextBlock Grid.Column="2" Text="{Binding Value}"/>
|
||||||
|
</Grid>
|
||||||
|
</DataTemplate>
|
||||||
|
</ItemsControl.ItemTemplate>
|
||||||
|
</ItemsControl>
|
||||||
|
</ScrollViewer-->
|
||||||
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
</Window>
|
</Window>
|
||||||
|
Loading…
Reference in New Issue
Block a user