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.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Tango.FSE.PPCConsole.ViewModels; namespace Tango.FSE.PPCConsole.Controls { /// /// Interaction logic for RemoteDesktopControl.xaml /// public partial class RemoteDesktopControl : UserControl { private RemoteDesktopViewVM _vm; public RemoteDesktopControl() { InitializeComponent(); Loaded += (_, __) => _vm = DataContext as RemoteDesktopViewVM; img.PreviewMouseDown += Img_PreviewMouseDown; img.PreviewMouseUp += Img_PreviewMouseUp; img.PreviewMouseMove += Img_PreviewMouseMove; img.PreviewKeyDown += Img_PreviewKeyDown; img.PreviewKeyUp += Img_PreviewKeyUp; img.PreviewMouseWheel += Img_PreviewMouseWheel; } private void Img_PreviewKeyDown(object sender, KeyEventArgs e) { _vm.OnKeyboardDown(e.Key, Keyboard.IsKeyDown(Key.LeftCtrl), Keyboard.IsKeyDown(Key.LeftShift), Keyboard.IsKeyDown(Key.LeftAlt)); } private void Img_PreviewKeyUp(object sender, KeyEventArgs e) { _vm.OnKeyboardUp(e.Key, Keyboard.IsKeyDown(Key.LeftCtrl), Keyboard.IsKeyDown(Key.LeftShift), Keyboard.IsKeyDown(Key.LeftAlt)); } private void Img_PreviewMouseDown(object sender, MouseButtonEventArgs e) { Mouse.Capture(img); if (e.ClickCount == 2) { _vm.OnMouseDoubleClick(e.ChangedButton, e.GetPosition(img), new Size(img.ActualWidth, img.ActualHeight)); } else { _vm.OnMouseDown(e.ChangedButton, e.GetPosition(img), new Size(img.ActualWidth, img.ActualHeight)); } } private void Img_PreviewMouseUp(object sender, MouseButtonEventArgs e) { img.Focus(); Keyboard.Focus(img); img.ReleaseMouseCapture(); _vm.OnMouseUp(e.ChangedButton, e.GetPosition(img), new Size(img.ActualWidth, img.ActualHeight)); } private void Img_PreviewMouseMove(object sender, MouseEventArgs e) { _vm.OnMouseMove(e.GetPosition(img), new Size(img.ActualWidth, img.ActualHeight)); } private void Img_PreviewMouseWheel(object sender, MouseWheelEventArgs e) { _vm.OnMouseScroll(e.Delta, e.GetPosition(img), new Size(img.ActualWidth, img.ActualHeight)); } private void BtnSnapshot_Click(object sender, RoutedEventArgs e) { rectSnapshot.StartDoubleAnimation(Rectangle.OpacityProperty, TimeSpan.FromSeconds(0.2), 1, 0, null, null, null, true); } } }