Introduction Slides
Introduction Slides
C# 10 Application
Introduction
Filip Ekberg
Principal Consultant & CEO
@fekberg | fekberg.com
Pause the video at any time
to fill in the exercise!
Globomantics ToDo
Todo
Globomantics ToDo
Todo
Id
Title
CreatedDate
CreatedBy
IsCompleted
IsDeleted
Parent
Globomantics ToDo
Todo
Id
Title
CreatedDate
CreatedBy
IsCompleted
IsDeleted
Parent
Globomantics ToDo
Todo
Id
Title
CreatedDate
CreatedBy
IsCompleted
IsDeleted
Parent
TodoTask
Globomantics ToDo
Todo
Id
Title
CreatedDate
CreatedBy
IsCompleted
IsDeleted
Parent
TodoTask
Bug Feature
Description
Description
Component
Severity Priority
AffectedUsers
AssignedTo
AffectedVersion
AssignedTo
Images
Globomantics ToDo
Todo
Id
Title
CreatedDate
CreatedBy
IsCompleted
IsDeleted
Parent
TodoTask
Bug Feature
Description
Description
Component
Severity Priority User
AffectedUsers
AssignedTo Id
AffectedVersion
AssignedTo Name
Images
Globomantics ToDo
Todo
Id
Title
CreatedDate
CreatedBy
IsCompleted
IsDeleted
Parent
TodoTask
Bug Feature
Description
Description
Component
Severity Priority User
AffectedUsers
AssignedTo Id
AffectedVersion
AssignedTo Name
Images
Globomantics ToDo
Todo
Id
Title
CreatedDate
CreatedBy
IsCompleted
IsDeleted
Parent
TodoTask
Bug Feature
Description
Description
Component
Severity Priority User
AffectedUsers
AssignedTo Id
AffectedVersion
AssignedTo Name
Images
Using Inheritance
en.wikipedia.org/wiki/Model-view-viewmodel
Separating UI from Business Logic using MVVM
View
(BugView) ViewModel
Model
(BugViewModel)
(Bug)
Connect to the
ViewModel to Load, Create,
Title, Description
interact with the Validate Bug
Model
ObservableObject
“The ObservableObject is a base class for objects that are observable
by implementing the INotifyPropertyChanged and
INotifyPropertyChanging interfaces.
It can be used as a starting point for all kinds of objects that need to
support property change notifications.”
learn.microsoft.com/en-us/dotnet/communitytoolkit/mvvm/observableobject
You will use the C#
language features you have
learnt about.
class MainWindow
{
public MainWindow(MainViewModel mainViewModel)
{
InitializeComponent();
class MainWindow
{
public MainWindow(MainViewModel mainViewModel)
{
InitializeComponent();
ExportCommand uses an
Action/Delegate to execute its logic
Inject Implementations of Interfaces
class MainViewModel
{
public MainViewModel(IRepository<TodoTask> todoRepository)
{
}
}
class MainViewModel
{
public MainViewModel(IRepository<TodoTask> todoRepository)
{
}