root / GES_PAC / View / Controls / ChamberButtonView.xaml.cs @ 42456640
Historique | Voir | Annoter | Télécharger (1,771 ko)
1 |
using GES_PAC.ViewModel; |
---|---|
2 |
using GES_PAC.ViewModel.Controls; |
3 |
|
4 |
namespace GES_PAC.View.Controls; |
5 |
|
6 |
public partial class ChamberButtonView : ContentView |
7 |
{ |
8 |
public static readonly BindableProperty ChamberIdProperty = |
9 |
BindableProperty.Create(nameof(ChamberId), typeof(int), typeof(ChamberButtonView), default(int), propertyChanged: OnChamberIdChanged); |
10 |
|
11 |
public static readonly BindableProperty TimerProperty = |
12 |
BindableProperty.Create(nameof(Timer), typeof(TimerPublisher), typeof(ChamberButtonView), propertyChanged: OnTimerChanged); |
13 |
|
14 |
public TimerPublisher? Timer |
15 |
{ |
16 |
get => (TimerPublisher?)GetValue(TimerProperty); |
17 |
set => SetValue(TimerProperty, value); |
18 |
} |
19 |
|
20 |
public int ChamberId |
21 |
{ |
22 |
get => (int)GetValue(ChamberIdProperty); |
23 |
set => SetValue(ChamberIdProperty, value); |
24 |
} |
25 |
public ChamberButtonView() |
26 |
{ |
27 |
InitializeComponent(); |
28 |
} |
29 |
|
30 |
protected override void OnBindingContextChanged() |
31 |
{ |
32 |
base.OnBindingContextChanged(); |
33 |
|
34 |
if (BindingContext is not ChamberButtonViewModel && ChamberId != 0 && Timer != null) |
35 |
{ |
36 |
var vm = new ChamberButtonViewModel(ChamberId, Timer); |
37 |
BindingContext = vm; |
38 |
vm.UpdateProperties(); |
39 |
} |
40 |
} |
41 |
private static void OnChamberIdChanged(BindableObject bindable, object oldValue, object newValue) |
42 |
{ |
43 |
var control = (ChamberButtonView)bindable; |
44 |
int id = (int)newValue; |
45 |
|
46 |
if (control.BindingContext is ChamberButtonViewModel vm) |
47 |
{ |
48 |
vm.UpdateChamberId(id); |
49 |
} |
50 |
} |
51 |
private static void OnTimerChanged(BindableObject bindable, object oldValue, object newValue) |
52 |
{ |
53 |
if (bindable is ChamberButtonView view) |
54 |
{ |
55 |
view.OnBindingContextChanged(); |
56 |
} |
57 |
} |
58 |
|
59 |
} |