Начат MVVM, нужно переделать под обычную архитектуру
This commit is contained in:
3
UP01Task2App/UP01Task2App.slnx
Normal file
3
UP01Task2App/UP01Task2App.slnx
Normal file
@@ -0,0 +1,3 @@
|
||||
<Solution>
|
||||
<Project Path="UP01Task2App/UP01Task2App.csproj" />
|
||||
</Solution>
|
||||
20
UP01Task2App/UP01Task2App/App.xaml
Normal file
20
UP01Task2App/UP01Task2App/App.xaml
Normal file
@@ -0,0 +1,20 @@
|
||||
<Application x:Class="UP01Task2App.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:UP01Task2App"
|
||||
StartupUri="Windows/ClientWindow.xaml">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary
|
||||
Source="Styles/ButtonStyle.xaml" />
|
||||
<ResourceDictionary
|
||||
Source="Styles/TextBoxStyle.xaml" />
|
||||
<ResourceDictionary
|
||||
Source="Styles/DatePickerStyle.xaml" />
|
||||
<ResourceDictionary
|
||||
Source="Styles/ComboBoxStyle.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
14
UP01Task2App/UP01Task2App/App.xaml.cs
Normal file
14
UP01Task2App/UP01Task2App/App.xaml.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Windows;
|
||||
|
||||
namespace UP01Task2App
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
10
UP01Task2App/UP01Task2App/AssemblyInfo.cs
Normal file
10
UP01Task2App/UP01Task2App/AssemblyInfo.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using System.Windows;
|
||||
|
||||
[assembly: ThemeInfo(
|
||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||
//(used if a resource is not found in the page,
|
||||
// or application resource dictionaries)
|
||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||
//(used if a resource is not found in the page,
|
||||
// app, or any theme specific resource dictionaries)
|
||||
)]
|
||||
58
UP01Task2App/UP01Task2App/Styles/ButtonStyle.xaml
Normal file
58
UP01Task2App/UP01Task2App/Styles/ButtonStyle.xaml
Normal file
@@ -0,0 +1,58 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Style
|
||||
x:Key="ButtonStyle"
|
||||
TargetType="Button">
|
||||
<Setter
|
||||
Property="Background"
|
||||
Value="#4969d1" />
|
||||
<Setter
|
||||
Property="FontSize"
|
||||
Value="16" />
|
||||
<Setter
|
||||
Property="Padding"
|
||||
Value="0" />
|
||||
<Setter Property="Height"
|
||||
Value="35"/>
|
||||
<Setter Property="Width"
|
||||
Value="250"/>
|
||||
<Setter
|
||||
Property="Foreground"
|
||||
Value="White" />
|
||||
<Setter
|
||||
Property="BorderThickness"
|
||||
Value="0" />
|
||||
<Setter
|
||||
Property="Cursor"
|
||||
Value="Hand"/>
|
||||
<Setter
|
||||
Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate
|
||||
TargetType="Button">
|
||||
<Border
|
||||
x:Name="mainBorder"
|
||||
Background="{TemplateBinding Background}"
|
||||
CornerRadius="3"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}">
|
||||
<ContentPresenter
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center" />
|
||||
</Border>
|
||||
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger
|
||||
Property="IsPressed"
|
||||
Value="True">
|
||||
<Setter
|
||||
TargetName="mainBorder"
|
||||
Property="Background"
|
||||
Value="#000033" />
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
30
UP01Task2App/UP01Task2App/Styles/ComboBoxStyle.xaml
Normal file
30
UP01Task2App/UP01Task2App/Styles/ComboBoxStyle.xaml
Normal file
@@ -0,0 +1,30 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<Style x:Key="ComboBoxStyle"
|
||||
TargetType="ComboBox">
|
||||
<Setter
|
||||
Property="Width"
|
||||
Value="200"/>
|
||||
<Setter
|
||||
Property="Height"
|
||||
Value="24"/>
|
||||
<Setter
|
||||
Property="HorizontalAlignment"
|
||||
Value="Left"/>
|
||||
<Setter
|
||||
Property="Padding"
|
||||
Value="0" />
|
||||
<Setter
|
||||
Property="FontSize"
|
||||
Value="16" />
|
||||
<Setter
|
||||
Property="Padding"
|
||||
Value="5,0,0,0" />
|
||||
<Setter
|
||||
Property="Cursor"
|
||||
Value="Hand" />
|
||||
|
||||
</Style>
|
||||
|
||||
</ResourceDictionary>
|
||||
26
UP01Task2App/UP01Task2App/Styles/DatePickerStyle.xaml
Normal file
26
UP01Task2App/UP01Task2App/Styles/DatePickerStyle.xaml
Normal file
@@ -0,0 +1,26 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Style
|
||||
x:Key="DatePickerStyle"
|
||||
TargetType="DatePicker">
|
||||
<Setter
|
||||
Property="Width"
|
||||
Value="200" />
|
||||
<Setter
|
||||
Property="Height"
|
||||
Value="24" />
|
||||
<Setter
|
||||
Property="FontSize"
|
||||
Value="16" />
|
||||
<Setter
|
||||
Property="VerticalContentAlignment"
|
||||
Value="Center" />
|
||||
<Setter
|
||||
Property="Padding"
|
||||
Value="0"/>
|
||||
<Setter
|
||||
Property="HorizontalAlignment"
|
||||
Value="Left"/>
|
||||
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
21
UP01Task2App/UP01Task2App/Styles/TextBoxStyle.xaml
Normal file
21
UP01Task2App/UP01Task2App/Styles/TextBoxStyle.xaml
Normal file
@@ -0,0 +1,21 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Style x:Key="TextBoxStyle"
|
||||
TargetType="TextBox">
|
||||
<Setter
|
||||
Property="Width"
|
||||
Value="200"/>
|
||||
<Setter
|
||||
Property="Height"
|
||||
Value="24"/>
|
||||
<Setter
|
||||
Property="FontSize"
|
||||
Value="16" />
|
||||
<Setter
|
||||
Property="Padding"
|
||||
Value="0" />
|
||||
<Setter
|
||||
Property="HorizontalAlignment"
|
||||
Value="Left"/>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
11
UP01Task2App/UP01Task2App/UP01Task2App.csproj
Normal file
11
UP01Task2App/UP01Task2App/UP01Task2App.csproj
Normal file
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net10.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<UseWPF>true</UseWPF>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
19
UP01Task2App/UP01Task2App/ViewModels/BaseViewModel.cs
Normal file
19
UP01Task2App/UP01Task2App/ViewModels/BaseViewModel.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace UP01Task2App.ViewModels
|
||||
{
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
public class BaseViewModel : INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
protected void OnPropertyChanged([CallerMemberName] string name = null)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
20
UP01Task2App/UP01Task2App/ViewModels/RelayCommand.cs
Normal file
20
UP01Task2App/UP01Task2App/ViewModels/RelayCommand.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Windows.Input;
|
||||
|
||||
public class RelayCommand : ICommand
|
||||
{
|
||||
private readonly Action _execute;
|
||||
private readonly Func<bool> _canExecute;
|
||||
|
||||
public RelayCommand(Action execute, Func<bool> canExecute = null)
|
||||
{
|
||||
_execute = execute;
|
||||
_canExecute = canExecute;
|
||||
}
|
||||
|
||||
public bool CanExecute(object parameter) => _canExecute?.Invoke() ?? true;
|
||||
|
||||
public void Execute(object parameter) => _execute();
|
||||
|
||||
public event EventHandler CanExecuteChanged;
|
||||
}
|
||||
36
UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml
Normal file
36
UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml
Normal file
@@ -0,0 +1,36 @@
|
||||
<Window x:Class="UP01Task2App.Windows.AppointmentWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
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:local="clr-namespace:UP01Task2App.Windows"
|
||||
mc:Ignorable="d"
|
||||
Title="Запись" Height="400" Width="300">
|
||||
|
||||
<StackPanel Margin="10" HorizontalAlignment="Center">
|
||||
|
||||
<TextBlock Text="Клиент:" FontWeight="Bold"/>
|
||||
<TextBlock Text="{Binding SelectedClient.LastName}" Margin="0,0,0,10" FontSize="16"/>
|
||||
|
||||
<TextBlock Text="Тренировка"/>
|
||||
<ComboBox ItemsSource="{Binding Specializations}"
|
||||
SelectedItem="{Binding SelectedSpecialization}"
|
||||
Style="{StaticResource ComboBoxStyle}"/>
|
||||
|
||||
<TextBlock Text="Тренер"/>
|
||||
<ComboBox ItemsSource="{Binding Trainers}"
|
||||
SelectedItem="{Binding SelectedTrainer}"
|
||||
Style="{StaticResource ComboBoxStyle}"/>
|
||||
|
||||
<TextBlock Text="Дата"/>
|
||||
<DatePicker SelectedDate="{Binding SelectedDate}"
|
||||
Style="{StaticResource DatePickerStyle}"/>
|
||||
|
||||
<Button Content="Записать"
|
||||
Command="{Binding SaveAppointmentCommand}"
|
||||
Margin="0,30,0,0"
|
||||
Width="200"
|
||||
Style="{StaticResource ButtonStyle}"/>
|
||||
|
||||
</StackPanel>
|
||||
</Window>
|
||||
25
UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml.cs
Normal file
25
UP01Task2App/UP01Task2App/Windows/AppointmentWindow.xaml.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace UP01Task2App.Windows
|
||||
{
|
||||
/// <summary>
|
||||
/// Логика взаимодействия для AppointmentWindow.xaml
|
||||
/// </summary>
|
||||
public partial class AppointmentWindow : Window
|
||||
{
|
||||
public AppointmentWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
37
UP01Task2App/UP01Task2App/Windows/ClientAppointmentList.xaml
Normal file
37
UP01Task2App/UP01Task2App/Windows/ClientAppointmentList.xaml
Normal file
@@ -0,0 +1,37 @@
|
||||
<Window x:Class="UP01Task2App.Windows.ClientAppointmentList"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
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:local="clr-namespace:UP01Task2App.Windows"
|
||||
mc:Ignorable="d"
|
||||
Title="ClientAppointmentList" Height="400" Width="460"
|
||||
ResizeMode="CanMinimize">
|
||||
<Grid>
|
||||
<StackPanel Margin="10">
|
||||
<TextBlock Text="Клиент:" FontWeight="Bold"/>
|
||||
<TextBlock Text="{Binding SelectedClient.LastName}" Margin="0,0,0,10" FontSize="16"/>
|
||||
|
||||
<TextBlock Text="Список записей" FontSize="18" Margin="0,0,0,10"/>
|
||||
|
||||
<ListBox ItemsSource="{Binding Appointments}"
|
||||
SelectedItem="{Binding SelectedAppointment}"
|
||||
Height="200"
|
||||
DisplayMemberPath="LastName"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button Content="Назад"
|
||||
Command="{Binding BackCommand}"
|
||||
Margin="10"
|
||||
Width="200"
|
||||
Style="{StaticResource ButtonStyle}"/>
|
||||
|
||||
<Button Content="Отменить запись"
|
||||
Command="{Binding CancelAppointmentCommand}"
|
||||
Margin="10"
|
||||
Width="200"
|
||||
Style="{StaticResource ButtonStyle}"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace UP01Task2App.Windows
|
||||
{
|
||||
/// <summary>
|
||||
/// Логика взаимодействия для ClientAppointmentList.xaml
|
||||
/// </summary>
|
||||
public partial class ClientAppointmentList : Window
|
||||
{
|
||||
public ClientAppointmentList()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
83
UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml
Normal file
83
UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml
Normal file
@@ -0,0 +1,83 @@
|
||||
<Window x:Class="UP01Task2App.Windows.ClientWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
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:local="clr-namespace:UP01Task2App.Windows"
|
||||
mc:Ignorable="d"
|
||||
Title="Клиенты" Height="700" Width="600">
|
||||
<StackPanel>
|
||||
<StackPanel Margin="10">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<StackPanel HorizontalAlignment="Left">
|
||||
<TextBlock Text="Фамилия"/>
|
||||
<TextBox Text="{Binding LastName}" Style="{StaticResource TextBoxStyle}"/>
|
||||
|
||||
<TextBlock Text="Имя"/>
|
||||
<TextBox Text="{Binding FirstName}" Style="{StaticResource TextBoxStyle}"/>
|
||||
|
||||
<TextBlock Text="Отчество"/>
|
||||
<TextBox Text="{Binding MiddleName}" Style="{StaticResource TextBoxStyle}"/>
|
||||
|
||||
<TextBlock Text="Дата рождения"/>
|
||||
<DatePicker SelectedDate="{Binding BirthDate}" Style="{StaticResource DatePickerStyle}" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel HorizontalAlignment="Right" Margin="20,0,0,0">
|
||||
<TextBlock Text="Фактический адрес"/>
|
||||
<TextBox Text="{Binding Address}" Style="{StaticResource TextBoxStyle}"/>
|
||||
|
||||
<TextBlock Text="Телефон"/>
|
||||
<TextBox Text="{Binding Phone}" Style="{StaticResource TextBoxStyle}"/>
|
||||
|
||||
<TextBlock Text="Номер абонемента"/>
|
||||
<TextBox Text="{Binding MembershipNumber}" Style="{StaticResource TextBoxStyle}"/>
|
||||
|
||||
<TextBlock Text="Пол"/>
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<RadioButton Content="М" GroupName="rg1"/>
|
||||
<RadioButton Content="Ж" GroupName="rg1"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Margin="10">
|
||||
|
||||
<TextBlock Text="Список клиентов" FontSize="18" Margin="0,0,0,10"/>
|
||||
|
||||
<ListBox ItemsSource="{Binding Clients}"
|
||||
SelectedItem="{Binding SelectedClient}"
|
||||
Height="250"
|
||||
DisplayMemberPath="LastName"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Margin="10">
|
||||
<StackPanel>
|
||||
<Button Content="Добавить клиента"
|
||||
Command="{Binding AddClientCommand}"
|
||||
Style="{StaticResource ButtonStyle}"
|
||||
Margin="10"/>
|
||||
|
||||
<Button Content="Изменить клиента"
|
||||
Command="{Binding EditClientCommand}"
|
||||
Style="{StaticResource ButtonStyle}"
|
||||
Margin="10"/>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel>
|
||||
<Button Content="Запись клиента"
|
||||
Command="{Binding AddAppointmentCommand}"
|
||||
Style="{StaticResource ButtonStyle}"
|
||||
Margin="10"/>
|
||||
|
||||
<Button Content="Просмотреть записи"
|
||||
Command="{Binding ViewAppointmentsCommand}"
|
||||
Style="{StaticResource ButtonStyle}"
|
||||
Margin="10"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
25
UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml.cs
Normal file
25
UP01Task2App/UP01Task2App/Windows/ClientWindow.xaml.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace UP01Task2App.Windows
|
||||
{
|
||||
/// <summary>
|
||||
/// Логика взаимодействия для ClientWindow.xaml
|
||||
/// </summary>
|
||||
public partial class ClientWindow : Window
|
||||
{
|
||||
public ClientWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user