Statistiques
| Branche: | Révision:

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
}