aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2019-11-05 15:15:04 +0200
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2019-11-05 15:15:04 +0200
commit9561a5b3d930d5a52e70f97d5fe9d63d4bb1e067 (patch)
tree4a49203f2bc4ec81103fdbaaf4bddee0c684b51a /Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs
parent9a161f10d1e6b50a3acbe95beddc9387fb56f108 (diff)
downloadTango-9561a5b3d930d5a52e70f97d5fe9d63d4bb1e067.tar.gz
Tango-9561a5b3d930d5a52e70f97d5fe9d63d4bb1e067.zip
Implemented TouchClickableControl for PPC notifications.
Diffstat (limited to 'Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs')
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs118
1 files changed, 118 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs
new file mode 100644
index 000000000..92e60f7bc
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs
@@ -0,0 +1,118 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+using System.Windows.Media;
+
+namespace Tango.Touch.Controls
+{
+ public class TouchClickableControl : Grid
+ {
+ private bool _isMouseDown;
+
+ #region Properties
+
+ public object CommandParameter
+ {
+ get { return (object)GetValue(CommandParameterProperty); }
+ set { SetValue(CommandParameterProperty, value); }
+ }
+ public static readonly DependencyProperty CommandParameterProperty =
+ DependencyProperty.Register("CommandParameter", typeof(object), typeof(TouchClickableControl), new PropertyMetadata(null));
+
+ #endregion
+
+ #region Routed Events
+
+ public static readonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent("Click", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(TouchClickableControl));
+ public event RoutedEventHandler Click
+ {
+ add
+ {
+ AddHandler(ClickEvent, value);
+ }
+ remove
+ {
+ RemoveHandler(ClickEvent, value);
+ }
+ }
+
+ #endregion
+
+ #region Commands
+
+ public ICommand Command
+ {
+ get { return (ICommand)GetValue(CommandProperty); }
+ set { SetValue(CommandProperty, value); }
+ }
+ public static readonly DependencyProperty CommandProperty =
+ DependencyProperty.Register("Command", typeof(ICommand), typeof(TouchClickableControl), new PropertyMetadata(null, (d, e) => (d as TouchClickableControl).OnCommandChanged()));
+
+ #endregion
+
+ #region Constructors
+
+ public TouchClickableControl()
+ {
+ Background = Brushes.Transparent;
+ }
+
+ #endregion
+
+ #region Private Methods
+
+ private void OnCommandChanged()
+ {
+ if (Command != null)
+ {
+ Command.CanExecuteChanged -= Command_CanExecuteChanged;
+ Command.CanExecuteChanged += Command_CanExecuteChanged;
+ }
+ }
+
+ private void Command_CanExecuteChanged(object sender, EventArgs e)
+ {
+ IsEnabled = Command != null && Command.CanExecute(CommandParameter);
+ }
+
+ #endregion
+
+ #region Override Methods
+
+ protected override void OnMouseDown(MouseButtonEventArgs e)
+ {
+ base.OnMouseDown(e);
+ _isMouseDown = true;
+ }
+
+ protected override void OnMouseUp(MouseButtonEventArgs e)
+ {
+ base.OnMouseUp(e);
+ if (_isMouseDown)
+ {
+ OnClick();
+ }
+
+ _isMouseDown = false;
+ }
+
+ /// <summary>
+ /// Raises the click event and executes the command.
+ /// </summary>
+ protected virtual void OnClick()
+ {
+ RoutedEventArgs args = new RoutedEventArgs(TouchClickableControl.ClickEvent, this);
+ RaiseEvent(args);
+ if (Command != null && Command.CanExecute(CommandParameter))
+ {
+ Command.Execute(CommandParameter);
+ }
+ }
+ #endregion
+ }
+}