Скруглена таблица

This commit is contained in:
2026-06-04 20:42:57 +03:00
parent 2565c138e4
commit 095ff99cf9
5 changed files with 96 additions and 77 deletions

View File

@@ -1,5 +1,3 @@
using Sms.Environment;
namespace Sms.Environment.Linux; namespace Sms.Environment.Linux;
public sealed class LinuxEnvironmentVariableStore : IEnvironmentVariableStore public sealed class LinuxEnvironmentVariableStore : IEnvironmentVariableStore

View File

@@ -17,10 +17,24 @@
<Style Selector="Button.titleButton:pointerover"> <Style Selector="Button.titleButton:pointerover">
<Setter Property="Background" Value="#D8D8D8" /> <Setter Property="Background" Value="#D8D8D8" />
</Style> </Style>
<Style Selector="Button.titleButton.close">
<Setter Property="CornerRadius" Value="0,11,0,0" />
</Style>
<Style Selector="Button.titleButton.close:pointerover"> <Style Selector="Button.titleButton.close:pointerover">
<Setter Property="Background" Value="#E81123" /> <Setter Property="Background" Value="#E81123" />
<Setter Property="Foreground" Value="White" /> <Setter Property="Foreground" Value="White" />
</Style> </Style>
<Style Selector="DataGrid.roundedGrid">
<Setter Property="RowHeight" Value="32" />
<Setter Property="Background" Value="Transparent" />
</Style>
<Style Selector="DataGrid.roundedGrid DataGridColumnHeader">
<Setter Property="Background" Value="Transparent" />
</Style>
<Style Selector="DataGrid.roundedGrid DataGridColumnHeader /template/ Border#HeaderBorder">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
</Style>
<Style Selector="DataGridRow.appSettings"> <Style Selector="DataGridRow.appSettings">
<Setter Property="Background" Value="#E3F2FD" /> <Setter Property="Background" Value="#E3F2FD" />
</Style> </Style>
@@ -34,8 +48,5 @@
<Style Selector="DataGridRow.appSettings.userStore"> <Style Selector="DataGridRow.appSettings.userStore">
<Setter Property="Background" Value="#C8E6C9" /> <Setter Property="Background" Value="#C8E6C9" />
</Style> </Style>
<Style Selector="DataGrid">
<Setter Property="RowHeight" Value="32" />
</Style>
</Application.Styles> </Application.Styles>
</Application> </Application>

View File

@@ -0,0 +1,6 @@
namespace Sms.TaskTwo.Avalonia;
public static class AppResources
{
public const string WindowTitle = "Тестовое Avalonia-приложение для SmartMealService";
}

View File

@@ -6,8 +6,8 @@
mc:Ignorable="d" mc:Ignorable="d"
x:Class="Sms.TaskTwo.Avalonia.Views.MainWindow" x:Class="Sms.TaskTwo.Avalonia.Views.MainWindow"
x:DataType="vm:MainWindowViewModel" x:DataType="vm:MainWindowViewModel"
Title="{x:Static core:AppResources.WindowTitle}" Title="{x:Static app:AppResources.WindowTitle}"
xmlns:core="using:Sms.TaskTwo.Core" xmlns:app="using:Sms.TaskTwo.Avalonia"
Width="960" Width="960"
Height="600" Height="600"
MinWidth="760" MinWidth="760"
@@ -20,26 +20,30 @@
Background="White" Background="White"
BorderBrush="#C8C8C8" BorderBrush="#C8C8C8"
BorderThickness="1" BorderThickness="1"
Margin="8"> Margin="8"
ClipToBounds="True">
<Grid RowDefinitions="Auto,Auto,Auto,Auto,*"> <Grid RowDefinitions="Auto,Auto,Auto,Auto,*">
<Grid Grid.Row="0" <Border Grid.Row="0"
ColumnDefinitions="*,Auto,Auto" Background="#ECECEC"
Background="#ECECEC" CornerRadius="11,11,0,0"
Height="44"> ClipToBounds="True"
<TextBlock Grid.Column="0" Height="44">
Text="{x:Static core:AppResources.WindowTitle}" <Grid ColumnDefinitions="*,Auto,Auto">
VerticalAlignment="Center" <TextBlock Grid.Column="0"
Margin="16,0,8,0" Text="{x:Static app:AppResources.WindowTitle}"
FontSize="14" /> VerticalAlignment="Center"
<Button Grid.Column="1" Margin="16,0,8,0"
Classes="titleButton" FontSize="14" />
Content="" <Button Grid.Column="1"
Click="OnMinimizeClick" /> Classes="titleButton"
<Button Grid.Column="2" Content=""
Classes="titleButton close" Click="OnMinimizeClick" />
Content="×" <Button Grid.Column="2"
Click="OnCloseClick" /> Classes="titleButton close"
</Grid> Content="×"
Click="OnCloseClick" />
</Grid>
</Border>
<Grid Grid.Row="1" <Grid Grid.Row="1"
Margin="12,8,12,0" Margin="12,8,12,0"
@@ -89,51 +93,57 @@
IsVisible="{Binding ReloadEnvironmentMessage, Converter={x:Static StringConverters.IsNotNullOrEmpty}}" /> IsVisible="{Binding ReloadEnvironmentMessage, Converter={x:Static StringConverters.IsNotNullOrEmpty}}" />
</StackPanel> </StackPanel>
<DataGrid x:Name="VariablesGrid" <Border Grid.Row="4"
Grid.Row="4" Margin="12,4,12,12"
Margin="12,4,12,12" CornerRadius="8"
ItemsSource="{Binding Rows}" ClipToBounds="True"
AutoGenerateColumns="False" Background="White"
CanUserReorderColumns="False" BorderBrush="#B0B0B0"
CanUserResizeColumns="True" BorderThickness="1">
CanUserSortColumns="False" <DataGrid x:Name="VariablesGrid"
GridLinesVisibility="All" Classes="roundedGrid"
HeadersVisibility="Column" ItemsSource="{Binding Rows}"
BorderThickness="1" AutoGenerateColumns="False"
BorderBrush="#B0B0B0" CanUserReorderColumns="False"
LoadingRow="OnLoadingRow"> CanUserResizeColumns="True"
<DataGrid.Columns> CanUserSortColumns="False"
<DataGridTemplateColumn Header="" GridLinesVisibility="All"
Width="44"> HeadersVisibility="Column"
<DataGridTemplateColumn.CellTemplate> BorderThickness="0"
<DataTemplate x:DataType="vm:EnvironmentVariableRowViewModel"> LoadingRow="OnLoadingRow">
<CheckBox IsChecked="{Binding UseUserStore, Mode=TwoWay}" <DataGrid.Columns>
IsEnabled="{Binding CanChangeUserStore}" <DataGridTemplateColumn Header=""
HorizontalAlignment="Center" Width="44">
VerticalAlignment="Center" /> <DataGridTemplateColumn.CellTemplate>
</DataTemplate> <DataTemplate x:DataType="vm:EnvironmentVariableRowViewModel">
</DataGridTemplateColumn.CellTemplate> <CheckBox IsChecked="{Binding UseUserStore, Mode=TwoWay}"
</DataGridTemplateColumn> IsEnabled="{Binding CanChangeUserStore}"
<DataGridTextColumn Header="Поле" HorizontalAlignment="Center"
Binding="{Binding Field}" VerticalAlignment="Center" />
IsReadOnly="True" </DataTemplate>
Width="210" </DataGridTemplateColumn.CellTemplate>
MinWidth="150" /> </DataGridTemplateColumn>
<DataGridTextColumn Header="Требуемое значение" <DataGridTextColumn Header="Поле"
Binding="{Binding RequiredValue, Mode=TwoWay}" Binding="{Binding Field}"
Width="2*" IsReadOnly="True"
MinWidth="140" /> Width="210"
<DataGridTextColumn Header="Актуальное значение" MinWidth="150" />
Binding="{Binding ActualValueDisplay}" <DataGridTextColumn Header="Требуемое значение"
IsReadOnly="True" Binding="{Binding RequiredValue, Mode=TwoWay}"
Width="2*" Width="2*"
MinWidth="140" /> MinWidth="140" />
<DataGridTextColumn Header="Комментарий" <DataGridTextColumn Header="Актуальное значение"
Binding="{Binding Comment, Mode=TwoWay}" Binding="{Binding ActualValueDisplay}"
Width="240" IsReadOnly="True"
MinWidth="180" /> Width="2*"
</DataGrid.Columns> MinWidth="140" />
</DataGrid> <DataGridTextColumn Header="Комментарий"
Binding="{Binding Comment, Mode=TwoWay}"
Width="240"
MinWidth="180" />
</DataGrid.Columns>
</DataGrid>
</Border>
</Grid> </Grid>
</Border> </Border>
</Window> </Window>

View File

@@ -1,6 +0,0 @@
namespace Sms.TaskTwo.Core;
public static class AppResources
{
public const string WindowTitle = "Тестовое WPF-приложение для SmartMealService";
}