-
Notifications
You must be signed in to change notification settings - Fork 0
/
LoadingControl.xaml.cs
121 lines (105 loc) · 3.88 KB
/
LoadingControl.xaml.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
118
119
120
121
using System.Windows;
using System.Windows.Media;
namespace InstaCollage
{
public partial class LoadingControl
{
public static readonly DependencyProperty IsIndeterminateProperty =
DependencyProperty.Register("IsIndeterminate", typeof(bool), typeof(LoadingControl), new PropertyMetadata(true, IsIndeterminatePropertyChanged));
public static readonly DependencyProperty ProgressValueProperty =
DependencyProperty.Register(
"ProgressValue", typeof(double), typeof(LoadingControl), new PropertyMetadata(0.0, ProgressValuePropertyChanged));
public static readonly DependencyProperty ProgressBarMessageProperty =
DependencyProperty.Register(
"ProgressBarMessage", typeof(string), typeof(LoadingControl), new PropertyMetadata("Загрузка...", ProgressBarMessagePropertyChanged));
public static readonly DependencyProperty ForegroundBrushProperty =
DependencyProperty.Register("ForegroundBrush", typeof(Brush), typeof(LoadingControl), new PropertyMetadata(new SolidColorBrush(Color.FromArgb(255, 48, 48, 48))));
public static readonly DependencyProperty BackgroundBrushProperty =
DependencyProperty.Register("BackgroundBrush", typeof(Brush), typeof(LoadingControl), new PropertyMetadata(new SolidColorBrush(Colors.Transparent)));
public Brush ForegroundBrush
{
get
{
return (Brush)GetValue(ForegroundBrushProperty);
}
set
{
SetValue(ForegroundBrushProperty, value);
}
}
public Brush BackgroundBrush
{
get
{
return (Brush)GetValue(BackgroundBrushProperty);
}
set
{
SetValue(BackgroundBrushProperty, value);
}
}
public LoadingControl()
{
InitializeComponent();
Loaded += OnLoaded;
}
public string ProgressBarMessage
{
get
{
return (string)GetValue(ProgressBarMessageProperty);
}
set
{
SetValue(ProgressBarMessageProperty, value);
}
}
public double ProgressValue
{
get
{
return (double)GetValue(ProgressValueProperty);
}
set
{
SetValue(IsIndeterminateProperty, value);
}
}
public bool IsIndeterminate
{
get
{
return (bool)GetValue(IsIndeterminateProperty);
}
set
{
SetValue(IsIndeterminateProperty, value);
}
}
private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
UpdateProgressBar();
}
private void UpdateProgressBar()
{
_progressBar.IsIndeterminate = IsIndeterminate;
_progressBar.Value = ProgressValue;
_progressBarMessage.Text = ProgressBarMessage;
_progressBar.Foreground = ForegroundBrush;
_progressBarMessage.Foreground = ForegroundBrush;
LoadingControlLayoutRoot.Background = BackgroundBrush;
}
private static void ProgressValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((LoadingControl)d).UpdateProgressBar();
}
private static void IsIndeterminatePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((LoadingControl)d).UpdateProgressBar();
}
private static void ProgressBarMessagePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((LoadingControl)d).UpdateProgressBar();
}
}
}