| 12
 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
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 
 |  
<TemplatePart(Name:="EventNotifierPanel", Type:=GetType(FrameworkElement))> _
<TemplatePart(Name:="EventAction", Type:=GetType(Button))> _
<TemplatePart(Name:="EventIcon", Type:=GetType(Image))> _
<TemplatePart(Name:="EventNumberLogo", Type:=GetType(Image))> _
<TemplatePart(Name:="EventNumber", Type:=GetType(TextBlock))> _
<TemplateVisualStateAttribute(Name:="NotifyAnimation", GroupName:="NotificationEvent")> _
Public Class EventNotifierControl
    Inherits ContentControl
 
#Region "Propriétées"
 
    Private Const RootElement As String = "EventNotifierPanel"
    Private Const EventNumLogo As String = "EventNumberLogo"
    Private Const EventNum As String = "EventNumber"
    Private Const EventAction As String = "EventAction"
    Private Const NotifyAnimation As String = "NotifyAnimation"
    Private Const EventIcon As String = "EventIcon"
 
    Private m_RootElement As FrameworkElement = Nothing
    Private m_EventNumberImg As Image = Nothing
    Private m_EventNumberTxtBlock As TextBlock = Nothing
    Private m_EventActionBtn As Button = Nothing
 
#Region "Dependecies"
 
    'IconSrc (indique l'icon a afficher)
    Public Shared ReadOnly IconSrcProperty As DependencyProperty = _
        DependencyProperty.Register("IconSrc", GetType(ImageSource), _
                                    GetType(EventNotifierControl), Nothing)
 
    'IndicatorNumberSrc (indique l'image a afficher pour contenir le nombre d'event)
    Public Shared ReadOnly IndicatorNumberSrcProperty As DependencyProperty = _
        DependencyProperty.Register("IndicatorNumberSrc", GetType(ImageSource), _
                                    GetType(EventNotifierControl), Nothing)
 
    'IndicatorVisibility (indique si on doit afficher le nombre d'event)
    Public Shared ReadOnly IndicatorVisibilityProperty As DependencyProperty = _
        DependencyProperty.Register("IndicatorVisibility", GetType(Visibility), _
                                    GetType(EventNotifierControl), Nothing)
 
#End Region
 
    Public Event Click As RoutedEventHandler
 
#End Region
 
#Region "Accesseurs"
 
    ''' <summary>
    ''' Obtient ou définie l'icon a afficher
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property IconSrc() As ImageSource
        Get
            Return DirectCast(GetValue(IconSrcProperty), ImageSource)
        End Get
        Set(ByVal value As ImageSource)
            SetValue(IconSrcProperty, value)
        End Set
    End Property
 
    ''' <summary>
    ''' Obtient ou définie l'image contenant le nombre d'evenement
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property IndicatorNumberSrc() As ImageSource
        Get
            Return DirectCast(GetValue(IndicatorNumberSrcProperty), ImageSource)
        End Get
        Set(ByVal value As ImageSource)
            SetValue(IndicatorNumberSrcProperty, value)
        End Set
    End Property
 
    ''' <summary>
    ''' Obtient le nombre de nouveuax evenement
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property EventNumberText() As Integer
        Get
            Dim l_EventNumber As Object = DirectCast(m_EventNumberTxtBlock.Text, Object)
            Return DirectCast(l_EventNumber, Integer)
        End Get
        Private Set(ByVal value As Integer)
            m_EventNumberTxtBlock.Text = value
        End Set
    End Property
 
    ''' <summary>
    ''' Obtient ou définie si le nombre d'evenement doit etre afficher
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property IndicatorVisibility() As Visibility
        Get
            Return DirectCast(GetValue(IndicatorVisibilityProperty), Visibility)
        End Get
        Set(ByVal value As Visibility)
            SetValue(IndicatorVisibilityProperty, value)
        End Set
    End Property
 
#End Region
 
#Region "Constructeur"
 
    Public Sub New()
 
        MyBase.New()
 
        DefaultStyleKey = GetType(MyPositionControl)
 
    End Sub
 
#End Region
 
#Region "Méthodes privées"
 
#Region "Event Handler"
 
    Public Sub m_EventActionBtn_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
 
        'L'utilisateur clique donc on remet le nombre d'event à 0
        EventNumberText = "0"
        'Et on on passe les elements en relation avec le nombre d'event en invisible
        IndicatorVisibility = Windows.Visibility.Collapsed
        RaiseEvent Click(sender, e)
 
    End Sub
 
    Public Sub m_EventNumberImg_MouseLeftButtonUp(ByVal sender As Object, ByVal e As RoutedEventArgs)
 
        m_EventActionBtn_Click(sender, e)
        RaiseEvent Click(sender, e)
 
    End Sub
 
    Public Sub m_EventNumberTxtBlock_MouseLeftButtonUp(ByVal sender As Object, ByVal e As RoutedEventArgs)
 
        m_EventActionBtn_Click(sender, e)
        RaiseEvent Click(sender, e)
 
    End Sub
 
#End Region
 
#End Region
 
#Region "Méthodes publiques"
 
    Public Overrides Sub OnApplyTemplate()
 
        MyBase.OnApplyTemplate()
 
        Me.m_RootElement = DirectCast(Me.GetTemplateChild(EventNotifierControl.RootElement),  _
                                        FrameworkElement)
 
        'If (m_RootElement IsNot Nothing) Then
 
        '    m_EventActionBtn = DirectCast(Me.GetTemplateChild( _
        '        EventNotifierControl.EventAction), Button)
        '    If (m_EventActionBtn IsNot Nothing) Then
        '        AddHandler m_EventActionBtn.Click, AddressOf m_EventActionBtn_Click
        '    End If
 
        '    m_EventNumberImg = DirectCast(Me.GetTemplateChild( _
        '        EventNotifierControl.EventNumLogo), Image)
        '    If (m_EventNumberImg IsNot Nothing) Then
        '        AddHandler m_EventNumberImg.MouseLeftButtonUp, AddressOf m_EventNumberImg_MouseLeftButtonUp
        '    End If
 
        '    m_EventNumberTxtBlock = DirectCast(Me.GetTemplateChild( _
        '        EventNotifierControl.EventNum), TextBlock)
        '    If (m_EventNumberTxtBlock IsNot Nothing) Then
        '        AddHandler m_EventNumberTxtBlock.MouseLeftButtonUp, AddressOf m_EventNumberTxtBlock_MouseLeftButtonUp
        '    End If
 
        'End If
 
    End Sub
 
    ''' <summary>
    ''' Lance l'animation qui indique un nouvel evenement
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub NotifyEvent(ByVal l_eventNumber As Integer)
 
        VisualStateManager.GoToState(Me, EventNotifierControl.NotifyAnimation, True)
        EventNumberText = l_eventNumber
        IndicatorVisibility = Windows.Visibility.Visible
 
    End Sub
 
#End Region
 
End Class | 
Partager