Add DataGrid to the About page

This commit is contained in:
Maksym Katsydan 2022-11-12 17:03:35 -05:00
parent 47f5732b84
commit caea418ab5
6 changed files with 45 additions and 77 deletions

View File

@ -1,6 +1,9 @@
<Application xmlns="https://github.com/avaloniaui" <Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AvaloniaCoreRTDemo.App"> x:Class="AvaloniaCoreRTDemo.App">
<Application.Styles>
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml" />
</Application.Styles>
<Application.Resources> <Application.Resources>
<FluentTheme x:Key="fluentTheme" Mode="Light" /> <FluentTheme x:Key="fluentTheme" Mode="Light" />
<SimpleTheme x:Key="simpleTheme" Mode="Light" /> <SimpleTheme x:Key="simpleTheme" Mode="Light" />

View File

@ -52,19 +52,19 @@ namespace AvaloniaCoreRTDemo
{ {
case ApplicationTheme.SimpleLight: case ApplicationTheme.SimpleLight:
this._simpleTheme.Mode = SimpleThemeMode.Light; this._simpleTheme.Mode = SimpleThemeMode.Light;
this.Styles[0] = this._simpleTheme; this.Styles[1] = this._simpleTheme;
break; break;
case ApplicationTheme.SimpleDark: case ApplicationTheme.SimpleDark:
this._simpleTheme.Mode = SimpleThemeMode.Dark; this._simpleTheme.Mode = SimpleThemeMode.Dark;
this.Styles[0] = this._simpleTheme; this.Styles[1] = this._simpleTheme;
break; break;
case ApplicationTheme.FluentLight: case ApplicationTheme.FluentLight:
this._fluentTheme.Mode = FluentThemeMode.Light; this._fluentTheme.Mode = FluentThemeMode.Light;
this.Styles[0] = this._fluentTheme; this.Styles[1] = this._fluentTheme;
break; break;
case ApplicationTheme.FluentDark: case ApplicationTheme.FluentDark:
this._fluentTheme.Mode = FluentThemeMode.Dark; this._fluentTheme.Mode = FluentThemeMode.Dark;
this.Styles[0] = this._fluentTheme; this.Styles[1] = this._fluentTheme;
break; break;
} }
} }

View File

@ -42,6 +42,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="11.0.999-cibuild0026098-beta" /> <PackageReference Include="Avalonia" Version="11.0.999-cibuild0026098-beta" />
<PackageReference Include="Avalonia.Desktop" Version="11.0.999-cibuild0026098-beta" /> <PackageReference Include="Avalonia.Desktop" Version="11.0.999-cibuild0026098-beta" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.0.999-cibuild0026098-beta" />
<PackageReference Include="Avalonia.ReactiveUI" Version="11.0.999-cibuild0026098-beta" /> <PackageReference Include="Avalonia.ReactiveUI" Version="11.0.999-cibuild0026098-beta" />
<PackageReference Include="Avalonia.Themes.Simple" Version="11.0.999-cibuild0026098-beta" /> <PackageReference Include="Avalonia.Themes.Simple" Version="11.0.999-cibuild0026098-beta" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.999-cibuild0026098-beta" /> <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.999-cibuild0026098-beta" />

View File

@ -1,67 +1,20 @@
<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" <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"
xmlns:viewModels="clr-namespace:AvaloniaCoreRTDemo.Windows.ViewModels" xmlns:viewModels="clr-namespace:AvaloniaCoreRTDemo.Windows.ViewModels"
mc:Ignorable="d" x:Class="AvaloniaCoreRTDemo.Windows.AboutWindow" d:DesignWidth="640" d:DesignHeight="256" mc:Ignorable="d" x:Class="AvaloniaCoreRTDemo.Windows.AboutWindow" d:DesignWidth="640" d:DesignHeight="256"
WindowState="Normal" WindowStartupLocation="CenterOwner" MinHeight="256" MinWidth="640" Height="256" Width="640" MaxHeight="256" MaxWidth="640" Title="About" CanResize="false" ShowInTaskbar="False" Icon="avares://AvaloniaCoreRTDemo/Assets/about.ico" WindowState="Normal" WindowStartupLocation="CenterOwner" Height="256" MaxWidth="840"
SizeToContent="Width"
Title="About"
CanResize="false" ShowInTaskbar="False" Icon="avares://AvaloniaCoreRTDemo/Assets/about.ico"
x:CompileBindings="True" x:CompileBindings="True"
x:DataType="viewModels:AboutViewModel"> x:DataType="viewModels:AboutViewModel">
<Grid VerticalAlignment="Top" HorizontalAlignment="Left" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto"> <Grid VerticalAlignment="Top" HorizontalAlignment="Left" ColumnDefinitions="Auto,*">
<Image Margin="0, 60" Grid.Row="0" Grid.Column="0" Stretch="None" Source="{Binding ComputerImage}" VerticalAlignment="Top" HorizontalAlignment="Left"> <Image Margin="0, 60" Grid.Column="0" Stretch="None" Source="{Binding ComputerImage}" VerticalAlignment="Top" HorizontalAlignment="Left">
</Image> </Image>
<ScrollViewer Margin="0, 10" Width="500" Height="230" Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto"> <DataGrid Grid.Column="1" Items="{Binding SystemDetails}" IsReadOnly="True">
<Grid ColumnDefinitions="Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto"> <DataGrid.Columns>
<Grid Grid.Row="0" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto"> <DataGridTextColumn Header="Key" Binding="{Binding Key, x:DataType=viewModels:SystemDetail}" FontWeight="Bold" />
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="Number of Cores: "/> <DataGridTextColumn Header="Value" Binding="{Binding Value, x:DataType=viewModels:SystemDetail}" />
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding NCores}"/> </DataGrid.Columns>
</Grid> </DataGrid>
<Grid Grid.Row="1" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="OS: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding OS}"/>
</Grid>
<Grid Grid.Row="2" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="OS Arch: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding OSArch}"/>
</Grid>
<Grid Grid.Row="3" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="OS Version: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding OSVersion}"/>
</Grid>
<Grid Grid.Row="4" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="Computer: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding ComputerName}"/>
</Grid>
<Grid Grid.Row="5" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="User: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding UserName}"/>
</Grid>
<Grid Grid.Row="6" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="System Path: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding SystemPath}"/>
</Grid>
<Grid Grid.Row="7" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="Current Path: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding CurrentPath}"/>
</Grid>
<Grid Grid.Row="8" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="Process Arch: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding ProcessArch}"/>
</Grid>
<Grid Grid.Row="9" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="Runtime Name: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding RuntimeName}"/>
</Grid>
<Grid Grid.Row="10" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="Runtime Path: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding RuntimePath}"/>
</Grid>
<Grid Grid.Row="11" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="Runtime Version: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding RuntimeVersion}"/>
</Grid>
<Grid Grid.Row="12" Grid.Column="0" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto">
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" FontWeight="Bold" Text="Framework Version: "/>
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Left" TextAlignment="Left" Text="{Binding FrameworkVersion}"/>
</Grid>
</Grid>
</ScrollViewer>
</Grid> </Grid>
</Window> </Window>

View File

@ -7,6 +7,9 @@
x:DataType="viewModels1:MainViewModelBase"> x:DataType="viewModels1:MainViewModelBase">
<DockPanel> <DockPanel>
<NativeMenuBar DockPanel.Dock="Top" /> <NativeMenuBar DockPanel.Dock="Top" />
<StackPanel DockPanel.Dock="Top">
<Button Content="About" Command="{Binding HelpAboutMethod}" />
</StackPanel>
<controls:MainControl/> <controls:MainControl/>
</DockPanel> </DockPanel>
<NativeMenu.Menu> <NativeMenu.Menu>

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using Avalonia.Media.Imaging; using Avalonia.Media.Imaging;
@ -7,25 +8,32 @@ using ReactiveUI;
namespace AvaloniaCoreRTDemo.Windows.ViewModels namespace AvaloniaCoreRTDemo.Windows.ViewModels
{ {
internal record SystemDetail(string Key, string Value);
internal sealed class AboutViewModel : ReactiveObject internal sealed class AboutViewModel : ReactiveObject
{ {
private readonly IBitmap _computerImage; private readonly IBitmap _computerImage;
private readonly Boolean _darkTheme; private readonly Boolean _darkTheme;
public IBitmap ComputerImage => _computerImage; public IBitmap ComputerImage => _computerImage;
public String NCores => Environment.ProcessorCount.ToString();
public String OS => RuntimeInformation.OSDescription; public IReadOnlyList<SystemDetail> SystemDetails { get; } = new[]
public String OSArch => RuntimeInformation.OSArchitecture.ToString(); {
public String OSVersion => Environment.OSVersion.ToString(); new SystemDetail("Number of Cores", Environment.ProcessorCount.ToString()),
public String ComputerName => Environment.MachineName; new SystemDetail("OS", RuntimeInformation.OSDescription),
public String UserName => Environment.UserName; new SystemDetail("OS Arch", RuntimeInformation.OSArchitecture.ToString()),
public String SystemPath => Environment.SystemDirectory; new SystemDetail("OS Version", Environment.OSVersion.ToString()),
public String CurrentPath => Environment.CurrentDirectory; new SystemDetail("Computer", Environment.MachineName),
public String ProcessArch => RuntimeInformation.ProcessArchitecture.ToString(); new SystemDetail("User", Environment.UserName),
public String RuntimeName => RuntimeInformation.FrameworkDescription; new SystemDetail("System Path", Environment.SystemDirectory),
public String RuntimePath => RuntimeEnvironment.GetRuntimeDirectory(); new SystemDetail("Current Path", Environment.CurrentDirectory),
public String RuntimeVersion => RuntimeEnvironment.GetSystemVersion(); new SystemDetail("Process Arch", RuntimeInformation.ProcessArchitecture.ToString()),
public String FrameworkVersion => Environment.Version.ToString(); new SystemDetail("Runtime Name", RuntimeInformation.FrameworkDescription),
new SystemDetail("Runtime Path", RuntimeEnvironment.GetRuntimeDirectory()),
new SystemDetail("Runtime Version", RuntimeEnvironment.GetSystemVersion()),
new SystemDetail("Framework Version", Environment.Version.ToString()),
};
private String ComputerImageName private String ComputerImageName
{ {