aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-11-05 15:17:41 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-11-05 15:17:41 +0200
commitd7650679fedebb42e5fa9d4d482d7ccf657d6ab4 (patch)
treec493dbbd56e2e3bf1260a21969e23ddaf787f375 /Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs
parent4c63f73496fc60026da9e363b3e85042733b4423 (diff)
parentf4f22e7088b672797e3e95f5a5fb5a96651c861e (diff)
downloadTango-d7650679fedebb42e5fa9d4d482d7ccf657d6ab4.tar.gz
Tango-d7650679fedebb42e5fa9d4d482d7ccf657d6ab4.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
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
+ }
+}