Mercurial > silverbladetech
comparison Messaging/Common/Controls/MetroTile.cs @ 35:83c1f62d9370
All working except image so far
author | adminsh@apollo |
---|---|
date | Tue, 27 Mar 2012 16:15:45 +0100 |
parents | |
children | c8c79f05d76f |
comparison
equal
deleted
inserted
replaced
34:874e51b94623 | 35:83c1f62d9370 |
---|---|
1 using System; | |
2 using System.Windows; | |
3 using System.Windows.Controls; | |
4 using System.Windows.Input; | |
5 using System.Windows.Media; | |
6 using System.Windows.Media.Imaging; | |
7 | |
8 namespace Common.Controls | |
9 { | |
10 [TemplatePart(Name="PART_DISPLAY_ICON", Type=typeof(Image))] | |
11 [TemplatePart(Name = "PART_DISPLAY_COUNT_CONTAINER", Type = typeof(TextBlock))] | |
12 [TemplatePart(Name = "PART_DISPLAY_TITLE_CONTAINER", Type = typeof(TextBlock))] | |
13 public class MetroTile : UserControl | |
14 { | |
15 | |
16 #region Constructor | |
17 | |
18 static MetroTile() | |
19 { | |
20 DefaultStyleKeyProperty.OverrideMetadata(typeof(MetroTile), | |
21 new FrameworkPropertyMetadata(typeof(MetroTile))); | |
22 | |
23 CommandManager.RegisterClassCommandBinding( | |
24 typeof(MetroTile), | |
25 new CommandBinding(ResetCountCommand, OnResetCountCommand)); | |
26 } | |
27 | |
28 #endregion | |
29 | |
30 #region Dependency Properties | |
31 | |
32 #region DisplayIcon | |
33 | |
34 /// <summary> | |
35 /// Icon for the tile | |
36 /// </summary> | |
37 public static readonly DependencyProperty DisplayIconProperty = | |
38 DependencyProperty.Register("DisplayIcon", | |
39 typeof(Image), | |
40 typeof(MetroTile), | |
41 new PropertyMetadata(null)); | |
42 | |
43 public Image DisplayIcon | |
44 { | |
45 get { return (Image) this.GetValue(DisplayIconProperty); } | |
46 set { this.SetValue(DisplayIconProperty, value); } | |
47 } | |
48 #endregion | |
49 | |
50 #region DisplayCount | |
51 | |
52 /// <summary> | |
53 /// Display count for the tile | |
54 /// </summary> | |
55 public static readonly DependencyProperty DisplayCountProperty = | |
56 DependencyProperty.Register("DisplayCount", | |
57 typeof(int), | |
58 typeof(MetroTile), | |
59 new UIPropertyMetadata(0)); | |
60 | |
61 public int DisplayCount | |
62 { | |
63 get { return (int)this.GetValue(DisplayCountProperty); } | |
64 set { this.SetValue(DisplayCountProperty, value); } | |
65 } | |
66 | |
67 #endregion | |
68 | |
69 #region DisplayText | |
70 | |
71 /// <summary> | |
72 /// Main Display text for the tile | |
73 /// </summary> | |
74 public static readonly DependencyProperty DisplayTextProperty = | |
75 DependencyProperty.Register("DisplayText", | |
76 typeof(string), | |
77 typeof(MetroTile), | |
78 new PropertyMetadata("Not set")); | |
79 | |
80 public string DisplayText | |
81 { | |
82 get { return (string)this.GetValue(DisplayTextProperty); } | |
83 set { this.SetValue(DisplayTextProperty, value); } | |
84 } | |
85 #endregion | |
86 | |
87 #endregion | |
88 | |
89 #region Events | |
90 | |
91 public static readonly RoutedEvent DisplayCountChangedEvent = | |
92 EventManager.RegisterRoutedEvent("DisplayCountChanged", | |
93 RoutingStrategy.Bubble, | |
94 typeof(RoutedEventHandler), | |
95 typeof(MetroTile)); | |
96 | |
97 public event RoutedEventHandler DisplayCountChanged | |
98 { | |
99 add { AddHandler(DisplayCountChangedEvent, value); } | |
100 remove { RemoveHandler(DisplayCountChangedEvent, value); } | |
101 } | |
102 | |
103 protected virtual void OnDisplayCountChanged(int oldValue, int newValue) | |
104 { | |
105 // 1. Pair of events: A preview that tunnels and a main event that bubbles | |
106 // 2. We could also create our own RoutedEventArgs that includes oldValue & new Value | |
107 | |
108 var previewEvent = new RoutedEventArgs(PreviewDisplayCountChangedEvent); | |
109 RaiseEvent(previewEvent); | |
110 | |
111 var e = new RoutedEventArgs(DisplayCountChangedEvent); | |
112 RaiseEvent(e); | |
113 } | |
114 | |
115 public static readonly RoutedEvent PreviewDisplayCountChangedEvent = | |
116 EventManager.RegisterRoutedEvent("PreviewDisplayCountChanged", | |
117 RoutingStrategy.Tunnel, | |
118 typeof(RoutedEventHandler), | |
119 typeof(MetroTile)); | |
120 | |
121 public event RoutedEventHandler PreviewDisplayCountChanged | |
122 { | |
123 add { AddHandler(PreviewDisplayCountChangedEvent, value); } | |
124 remove { RemoveHandler(PreviewDisplayCountChangedEvent, value); } | |
125 } | |
126 | |
127 #endregion | |
128 | |
129 #region Commands | |
130 | |
131 public static readonly ICommand ResetCountCommand = | |
132 new RoutedUICommand("ResetCount", "ResetCount", typeof(MetroTile)); | |
133 | |
134 private static void OnResetCountCommand(object sender, ExecutedRoutedEventArgs e) | |
135 { | |
136 var target = (MetroTile)sender; | |
137 target.DisplayCount = 0; | |
138 } | |
139 | |
140 #endregion | |
141 | |
142 } | |
143 } |