-
Notifications
You must be signed in to change notification settings - Fork 5
/
MainViewModel.cs
117 lines (97 loc) · 4.05 KB
/
MainViewModel.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using System.Collections.ObjectModel;
using System.Threading;
using Catel.Data;
using Catel.MVVM;
using Catel.Services;
using Seterlund.CodeGuard;
using BooksLibrary.Models;
namespace BooksLibrary.ViewModels
{
/// <summary>
/// MainWindow view model.
/// </summary>
public class MainViewModel : ViewModelBase
{
private readonly IUIVisualizerService _uiVisualizerService;
private readonly IPleaseWaitService _pleaseWaitService;
private readonly IMessageService _messageService;
public override string Title { get { return "View model title"; } }
public MainViewModel(IUIVisualizerService uiVisualizerService, IPleaseWaitService pleaseWaitService, IMessageService messageService)
{
_uiVisualizerService = uiVisualizerService;
_pleaseWaitService = pleaseWaitService;
_messageService = messageService;
BooksCollection = new ObservableCollection<Book>
{
new Book {Title = "Автостопом по галактике", Author = "Дуглас Адамс"},
new Book {Title = "Сто лет одиночества", Author = "Габриель Гарсиа Маркес"},
new Book {Title = "Маленький принц", Author = "Антуан де Сент-Экзюпери"},
new Book {Title = "1984", Author = "Джордж Оруэлл"},
new Book {Title = "Над пропастью во ржи", Author = "Джером Дэвид Сэлинджер"},
};
}
public ObservableCollection<Book> BooksCollection
{
get { return GetValue<ObservableCollection<Book>>(BooksCollectionProperty); }
set { SetValue(BooksCollectionProperty, value); }
}
public static readonly PropertyData BooksCollectionProperty = RegisterProperty("BooksCollection", typeof(ObservableCollection<Book>));
public Book SelectedBook
{
get { return GetValue<Book>(SelectedBookProperty); }
set { SetValue(SelectedBookProperty, value); }
}
public static readonly PropertyData SelectedBookProperty = RegisterProperty("SelectedBook", typeof(Book));
private Command _addCommand;
public Command AddCommand
{
get
{
return _addCommand ?? (_addCommand = new Command(() =>
{
var viewModel = new BookViewModel();
_uiVisualizerService.ShowDialog(viewModel, (sender, e) =>
{
if (e.Result ?? false)
{
BooksCollection.Add(viewModel.BookObject);
}
});
}));
}
}
private Command _editCommand;
public Command EditCommand
{
get
{
return _editCommand ?? (_editCommand = new Command(() =>
{
var viewModel = new BookViewModel(SelectedBook);
_uiVisualizerService.ShowDialog(viewModel);
},
() => SelectedBook != null));
}
}
private Command _removeCommand;
public Command RemoveCommand
{
get
{
return _removeCommand ?? (_removeCommand = new Command(async () =>
{
if (await _messageService.Show("Вы действительно хотите удалить объект?", "Внимание!",
MessageButton.YesNo, MessageImage.Warning) != MessageResult.Yes)
{
return;
}
_pleaseWaitService.Show("Удаление объекта...");
Thread.Sleep(2000);
BooksCollection.Remove(SelectedBook);
_pleaseWaitService.Hide();
},
() => SelectedBook != null));
}
}
}
}