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 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