Added Minimize/Maximize/Close Buttons and took WindowStyle

This commit is contained in:
Ano-sys
2025-02-21 21:46:17 +01:00
parent cb0ac5e60a
commit 036acd4d19
4 changed files with 102 additions and 30 deletions
-9
View File
@@ -8,7 +8,6 @@ namespace SimpleDraw.Models;
public class DrawingPoints : ObservableObject
{
private ObservableCollection<Point> _drawingPoints = new ObservableCollection<Point>();
// private ObservableCollection<ObservableCollection<Point>> _drawingPointsList = new ObservableCollection<ObservableCollection<Point>>();
private Brush _brush;
private double _brushThickness;
@@ -36,12 +35,4 @@ public class DrawingPoints : ObservableObject
Brush = brush;
BrushThickness = brushThickness;
}
/*
public ObservableCollection<ObservableCollection<Point>> DrawingPointsList
{
get => _drawingPointsList;
set => SetProperty(ref _drawingPointsList, value);
}
*/
}
+3
View File
@@ -13,6 +13,9 @@ public class MainWindowViewModel : ViewModelBase
public MainWindowViewModel()
{
DisplaySplitEvent = new RelayCommand(DisplaySplit);
CloseAppEvent = new RelayCommand(CloseApp);
MaximizeAppEvent = new RelayCommand(MaximizeApp);
MinimizeAppEvent = new RelayCommand(MinimizeApp);
ColorPalette =
[
+29
View File
@@ -74,4 +74,33 @@ public class ViewModelBase : ObservableObject
{
IsSplitOpen = !IsSplitOpen;
}
private WindowState _windowStateProperty;
public WindowState WindowStateProperty
{
get => _windowStateProperty;
set => SetProperty(ref _windowStateProperty, value);
}
public IRelayCommand CloseAppEvent { get; protected set; }
protected void CloseApp()
{
Environment.Exit(0);
}
public IRelayCommand MaximizeAppEvent { get; protected set; }
protected void MaximizeApp()
{
WindowStateProperty = WindowState.Maximized;
}
public IRelayCommand MinimizeAppEvent { get; protected set; }
protected void MinimizeApp()
{
WindowStateProperty = WindowState.Minimized;
}
}
+70 -21
View File
@@ -18,6 +18,9 @@
Title="SimpleDraw"
Width="{Binding WindowWidth}"
Height="{Binding WindowHeight}"
WindowState="{Binding WindowStateProperty, Mode=TwoWay}"
SystemDecorations="None"
ExtendClientAreaToDecorationsHint="True"
MinWidth="400"
MinHeight="300"
WindowStartupLocation="CenterScreen"
@@ -39,28 +42,13 @@
<Grid Background="#66ffffff">
<Grid Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="25"></RowDefinition>
<RowDefinition Height="50*"></RowDefinition>
<RowDefinition Height="50*"></RowDefinition>
<RowDefinition Height="50*"></RowDefinition>
<RowDefinition Height="50*"></RowDefinition>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0" Background="Transparent">
<Menu DockPanel.Dock="Top" Background="Transparent" HorizontalAlignment="Left">
<MenuItem Header="_File">
<MenuItem Header="_Open..."/>
<Separator/>
<MenuItem Header="_Exit"/>
</MenuItem>
<MenuItem Header="_Edit">
<MenuItem Header="Copy"/>
<MenuItem Header="Paste"/>
</MenuItem>
</Menu>
<Button DockPanel.Dock="Top" HorizontalAlignment="Right">X</Button>
</DockPanel>
<StackPanel Grid.Row="1">
<TextBox Text="Select Color:" IsHitTestVisible="False" IsReadOnly="True" BorderThickness="0" Background="Transparent"/>
<StackPanel Grid.Row="0">
<TextBox Text="Select Color:" IsHitTestVisible="False" IsReadOnly="True" BorderThickness="0" Background="Transparent" Margin="0,5,5,-5"/>
<ItemsControl ItemsSource="{Binding ColorPalette}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
@@ -82,11 +70,14 @@
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<TextBox HorizontalAlignment="Left" TextAlignment="Left" Margin="5,5,5,0" IsHitTestVisible="False" IsReadOnly="True" BorderThickness="0" Background="Transparent">
<!-- Colorpicker -->
</StackPanel>
<StackPanel Grid.Row="1">
<TextBox HorizontalAlignment="Left" TextAlignment="Left" Margin="0,5,5,-5" IsHitTestVisible="False" IsReadOnly="True" BorderThickness="0" Background="Transparent">
Brush Size:
</TextBox>
<TextBox Text="{Binding BrushThickness, Mode=TwoWay}" Margin="5,0" HorizontalAlignment="Stretch" TextAlignment="Left" BorderThickness="2" Background="Transparent"></TextBox>
<Slider Margin="5, 0" Value="{Binding BrushThickness}" Maximum="50" Minimum="0.5"></Slider>
<Slider Margin="10, -5, 10, 0" Value="{Binding BrushThickness}" Maximum="50" Minimum="0.5"></Slider>
</StackPanel>
</Grid>
</Grid>
@@ -144,7 +135,18 @@
<!-- left Info bar -->
<StackPanel Width="30" HorizontalAlignment="Left" IsVisible="{Binding !IsSplitOpen}" Background="#d4d4fc">
<!-- Menu-Opener -->
<Button Content="≡" Command="{Binding DisplaySplitEvent}" HorizontalAlignment="Center" VerticalAlignment="Top">
<Button Content="≡"
Command="{Binding DisplaySplitEvent}"
HorizontalAlignment="Center"
VerticalAlignment="Top"
FontSize="18"
Width="25"
Height="25"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Padding="0,-6,0,0"
Margin="0,5,0,0"
>
<Button.RenderTransform>
<TranslateTransform X="{Binding ButtonOffset}" />
</Button.RenderTransform>
@@ -190,5 +192,52 @@
>
🖫
</Button>
<Grid HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,7.5,7.5,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25"></ColumnDefinition>
<ColumnDefinition Width="25"></ColumnDefinition>
<ColumnDefinition Width="25"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Column="2"
Margin="0,0,0,0"
Padding="0"
CornerRadius="0,5,5,0"
Background="#d4d4ff"
FontSize="12"
Width="25"
Height="25"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Command="{Binding CloseAppEvent}"
>
X
</Button>
<Button Grid.Column="1"
Padding="0"
Background="#d4d4ff"
FontSize="12"
Width="25"
Height="25"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Command="{Binding MaximizeAppEvent}"
>
🗖
</Button>
<Button Grid.Column="0"
Margin="0,0,0,0"
Padding="0"
CornerRadius="5,0,0,5"
Background="#d4d4ff"
FontSize="12"
Width="25"
Height="25"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Command="{Binding MinimizeAppEvent}"
>
🗕
</Button>
</Grid>
</Panel>
</Window>