public void FillRectangle(Brush brush, float x, float y, float width, float height) { SetOffset(true); var wpfBrush = brush.ToWpf(true); Control.DrawRectangle(wpfBrush, null, WpfExtensions.NormalizedRect(x, y, width, height)); }
/// <summary> /// Handles a <see cref="E:Stylus" /> event. /// </summary> /// <param name="e">The <see cref="StylusEventArgs"/> instance containing the event data.</param> /// <param name="touchEventType">The <see cref="TouchEventType"/> event type</param> private void OnStylus(StylusEventArgs e, TouchEventType touchEventType) { var browser = GetBrowser(); if (!e.Handled && browser != null) { var modifiers = WpfExtensions.GetModifierKeys(); var pointerType = e.StylusDevice.Inverted ? PointerType.Eraser : PointerType.Pen; //Send all points to host foreach (var stylusPoint in e.GetStylusPoints(this)) { var touchEvent = new TouchEvent() { Id = e.StylusDevice.Id, X = (float)stylusPoint.X, Y = (float)stylusPoint.Y, PointerType = pointerType, Pressure = stylusPoint.PressureFactor, Type = touchEventType, Modifiers = modifiers, }; browser.GetHost().SendTouchEvent(touchEvent); } e.Handled = true; } }
public override DataTemplate SelectTemplate(object item, DependencyObject container) { var contentControl = WpfExtensions.VisualUpwardSearch <ContentControl>(container); var dataTemplate = item == null?GetNullDataTemplate(contentControl) : GetNotNullDataTemplate(contentControl); return(dataTemplate); }
private static void FrameworkElementOnRequestBringIntoView(object sender, RequestBringIntoViewEventArgs requestBringIntoViewEventArgs) { requestBringIntoViewEventArgs.Handled = true; var itemsControl = WpfExtensions.FindParent <ItemsControl>((FrameworkElement)sender); if (itemsControl != null) { var scrollViewer = WpfExtensions.GetDescendantByType <ScrollViewer>(itemsControl); if (scrollViewer != null) { var item = (FrameworkElement)requestBringIntoViewEventArgs.TargetObject; var relativePoint = item.TranslatePoint(new Point(0, 0), itemsControl); var childTransform = item.TransformToAncestor(scrollViewer); var rectangle = childTransform.TransformBounds(new Rect(new Point(0, 0), item.RenderSize)); //Check if the elements Rect intersects with that of the scrollviewer’s var result = Rect.Intersect(new Rect(new Point(0, 0), scrollViewer.RenderSize), rectangle); var invisible = result == Rect.Empty; if (invisible) { scrollViewer.ScrollToVerticalOffset(relativePoint.Y); } } } }
/// <summary> /// Handles a <see cref="E:Stylus" /> event. /// </summary> /// <param name="e">The <see cref="StylusEventArgs"/> instance containing the event data.</param> /// <param name="touchEventType">The <see cref="TouchEventType"/> event type</param> private void OnStylus(StylusEventArgs e, TouchEventType touchEventType) { var browser = GetBrowser(); var stylusPoints = e.GetStylusPoints(this); if (!e.Handled && browser != null && e.StylusDevice != null && e.StylusDevice.TabletDevice.Type == TabletDeviceType.Stylus && stylusPoints.Count > 0) { var modifiers = WpfExtensions.GetModifierKeys(); var pressure = stylusPoints[0].PressureFactor; var pointerType = e.StylusDevice.Inverted ? PointerType.Eraser : PointerType.Pen; var touchEvent = new TouchEvent() { Id = e.StylusDevice.Id, X = (float)stylusPoints[0].X, Y = (float)stylusPoints[0].Y, PointerType = pointerType, Pressure = pressure, Type = touchEventType, Modifiers = modifiers, }; browser.GetHost().SendTouchEvent(touchEvent); e.Handled = true; } }
public void GetVisibleRange(out int firstVisibleItemIndex, out int lastVisibleItemIndex) { firstVisibleItemIndex = 0; lastVisibleItemIndex = -1; var scrollViewer = WpfExtensions.FindParent <ScrollViewer>(this); if (scrollViewer == null) { return; } var itemsControl = ItemsControl.GetItemsOwner(this); if (!itemsControl.HasItems) { return; } var container = (FrameworkElement)itemsControl.ItemContainerGenerator.ContainerFromIndex(0); firstVisibleItemIndex = (int)Math.Floor(scrollViewer.VerticalOffset / container.ActualHeight) * Columns; lastVisibleItemIndex = (int)Math.Ceiling((scrollViewer.VerticalOffset + scrollViewer.ViewportHeight) / container.ActualHeight) * Columns - 1; var itemCount = itemsControl.HasItems ? itemsControl.Items.Count : 0; if (lastVisibleItemIndex >= itemCount) { lastVisibleItemIndex = itemCount - 1; } }
private void OnLoaded(object sender, RoutedEventArgs routedEventArgs) { Loaded -= OnLoaded; var itemsControl = WpfExtensions.FindChild <ItemsControl>(KeyLogView, null); _scrollViewer = WpfExtensions.FindChild <ScrollViewer>(itemsControl, null); ((LiveKeyloggerViewModel)DataContext).ViewUpdated += OnViewUpdated; }
private void TextBoxButtonOnLoaded(object sender, RoutedEventArgs e) { //workaround for a bug in MahApps.Metro var button = WpfExtensions.FindParent <Button>((DependencyObject)sender); button.ToolTip = (string)Application.Current.Resources["Proxy"]; TextBoxHelper.SetIsClearTextButtonBehaviorEnabled(button, false); button.Command = ((ConnectToServerViewModel)DataContext).OpenProxySettingsCommand; }
protected override void OnAttached() { base.OnAttached(); _scrollViewer = WpfExtensions.GetDescendantByType<ScrollViewer>(AssociatedObject); AssociatedObject.AddValueChanged(ItemsControl.ItemsSourceProperty, ItemsSourceChanged); _oldItemsSource = AssociatedObject.ItemsSource as INotifyCollectionChanged; if (_oldItemsSource != null) _oldItemsSource.CollectionChanged += ItemsSourceOnCollectionChanged; }
private static void TreeViewOnPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) { var treeListViewItem = WpfExtensions.VisualUpwardSearch <TreeViewItem>(e.OriginalSource as DependencyObject); if (treeListViewItem != null) { treeListViewItem.Focus(); treeListViewItem.IsSelected = true; e.Handled = true; } }
public void DrawArc(Pen pen, float x, float y, float width, float height, float startAngle, float sweepAngle) { SetOffset(false); if (sweepAngle >= 360f) { DrawEllipse(pen, x, y, width, height); } else { var arc = CreateArcDrawing(WpfExtensions.NormalizedRect(x, y, width, height), startAngle, sweepAngle, false); Control.DrawGeometry(null, pen.ToWpf(true), arc); } }
public void FillPie(Brush brush, float x, float y, float width, float height, float startAngle, float sweepAngle) { SetOffset(true); if (sweepAngle >= 360f) { FillEllipse(brush, x, y, width, height); } else { var arc = CreateArcDrawing(WpfExtensions.NormalizedRect(x, y, width, height), startAngle, sweepAngle, true); Control.DrawGeometry(brush.ToWpf(true), null, arc); } }
/// <summary> /// Handles a <see cref="E:Touch" /> event. /// </summary> /// <param name="e">The <see cref="TouchEventArgs"/> instance containing the event data.</param> private void OnTouch(TouchEventArgs e) { var browser = GetBrowser(); if (!e.Handled && browser != null) { var modifiers = WpfExtensions.GetModifierKeys(); var touchPoint = e.GetTouchPoint(this); var touchEventType = TouchEventType.Cancelled; switch (touchPoint.Action) { case TouchAction.Down: { touchEventType = TouchEventType.Pressed; break; } case TouchAction.Move: { touchEventType = TouchEventType.Moved; break; } case TouchAction.Up: { touchEventType = TouchEventType.Released; break; } default: { touchEventType = TouchEventType.Cancelled; break; } } var touchEvent = new TouchEvent() { Id = e.TouchDevice.Id, X = (float)touchPoint.Position.X, Y = (float)touchPoint.Position.Y, PointerType = PointerType.Touch, Type = touchEventType, Modifiers = modifiers, }; browser.GetHost().SendTouchEvent(touchEvent); e.Handled = true; } }
private void Close(object o, RoutedEventArgs e) { TabControlEx tabControl = WpfExtensions.FindVisualParent <TabControlEx>(this); if (tabControl == null) { return; } tabControl.RemoveItem(this); //after remove the item from the tabcontrol,detach the hander from the click event this._closeButton.Click -= new RoutedEventHandler(Close); }
public void DrawImage(Image image, float x, float y, float width, float height) { SetOffset(true); var src = image.ToWpf((int)Math.Max(width, height)); if ((ImageInterpolation == ImageInterpolation.High || ImageInterpolation == ImageInterpolation.Default) && (width != src.Width || height != src.Height)) { // better image quality by using transformed bitmap, plus it is actually faster src = new swmi.TransformedBitmap( src, new swm.ScaleTransform(width / src.Width * 96 / src.DpiX, height / src.Height * 96 / src.DpiY, 0, 0) ); } Control.DrawImage(src, WpfExtensions.NormalizedRect(x, y, width, height)); }
private void AssociatedObject_LayoutUpdated(object sender, System.EventArgs e) { if (this.AssociatedObject.IsVisible == false) { SetIsInViewport(this.AssociatedObject, false); return; } var container = WpfExtensions.FindParent <ListBox>(this.AssociatedObject); if (container == null) { return; } var visible = this.IsVisibleToUser(this.AssociatedObject, container) == true; SetIsInViewport(this.AssociatedObject, visible); }
protected override void OnPreviewMouseRightButtonDown(MouseButtonEventArgs e) { base.OnPreviewMouseRightButtonDown(e); if (!SelectItemOnRightClick) { return; } var treeListViewItem = WpfExtensions.VisualUpwardSearch <TreeListViewItem>(e.OriginalSource as DependencyObject); if (treeListViewItem != null) { treeListViewItem.Focus(); treeListViewItem.IsSelected = true; e.Handled = true; } }
private void MainListViewOnLoaded(object sender, RoutedEventArgs routedEventArgs) { _listViewScrollViewer = WpfExtensions.GetFirstChildOfType <ScrollViewer>(MainListView); _listViewScrollViewer.ScrollChanged += ListViewScrollViewerOnScrollChanged; RefreshVisibleClients(); }
private void AssociatedObjectOnLoaded(object sender, RoutedEventArgs routedEventArgs) { _fileListScrollViewer = WpfExtensions.GetFirstChildOfType <ScrollViewer>(AssociatedObject); _fileListScrollViewer.ScrollChanged += FileListScrollViewerOnScrollChanged; }
public static void Attach(FrameworkElement fe) { FrameworkElement selectedControl = null; Style designerStyle = (Style)Application.Current.FindResource("DesignerItemStyle"); if (fe is Panel) { var fePanel = (Panel)fe; fe.PreviewMouseLeftButtonDown += (s, e) => { if (e.Source is DependencyObject) { var clickedElement = ((DependencyObject)e.OriginalSource).GetAncestors <ContentControl>().FirstOrDefault(el => el.Style == designerStyle && WpfExtensions.GetItemsPanel(el.GetParent(true)) == fe); if (clickedElement == null) { foreach (DependencyObject item in fePanel.Children) { Selector.SetIsSelected(item, false); } selectedControl = null; return; } foreach (var control in fePanel.Children.OfType <FrameworkElement>()) { if (ProcessControl(control, clickedElement, ref selectedControl)) { if (selectedControl is ContentControl cc && cc.Content is ButtonBase) { e.Handled = true; return; } } } } }; } else if (fe is ItemsControl) { var feItemsControl = (ItemsControl)fe; fe.PreviewMouseLeftButtonDown += (s, e) => { if (e.Source is DependencyObject) { var clickedElement = ((DependencyObject)e.Source).GetAncestors <ContentControl>().FirstOrDefault(el => el.Style == designerStyle && el.Parent == fe); if (clickedElement == null) { foreach (DependencyObject item in feItemsControl.Items) { Selector.SetIsSelected(item, false); } selectedControl = null; return; } foreach (var control in feItemsControl.Items.OfType <FrameworkElement>()) { if (ProcessControl(control, clickedElement, ref selectedControl)) { if (selectedControl is ContentControl cc && cc.Content is ButtonBase) { e.Handled = true; return; } } } } }; } }
public void DrawRectangle(Pen pen, float x, float y, float width, float height) { SetOffset(false); Control.DrawRectangle(null, pen.ToWpf(true), WpfExtensions.NormalizedRect(x, y, width, height)); }
public void AddRectangle(float x, float y, float width, float height) { Control.AddGeometry(new swm.RectangleGeometry(WpfExtensions.NormalizedRect(x, y, width, height))); figure = null; }
public MainWindow() { WpfExtensions.SetTracing(); InitializeComponent(); }