diff options
| author | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2019-11-05 15:15:04 +0200 |
|---|---|---|
| committer | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2019-11-05 15:15:04 +0200 |
| commit | 9561a5b3d930d5a52e70f97d5fe9d63d4bb1e067 (patch) | |
| tree | 4a49203f2bc4ec81103fdbaaf4bddee0c684b51a /Software/Visual_Studio/Tango.Touch/Controls/TouchClickableControl.cs | |
| parent | 9a161f10d1e6b50a3acbe95beddc9387fb56f108 (diff) | |
| download | Tango-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.cs | 118 |
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 + } +} |
