本文整理汇总了C#中System.Windows.FrameworkElement.GetPosition方法的典型用法代码示例。如果您正苦于以下问题:C# FrameworkElement.GetPosition方法的具体用法?C# FrameworkElement.GetPosition怎么用?C# FrameworkElement.GetPosition使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.FrameworkElement
的用法示例。
在下文中一共展示了FrameworkElement.GetPosition方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ForceWindowDragState
/// <summary>
/// Manually begins a window drag operation using the given drag handle.
/// This is rather advanced and would normally happen automatically via a click event on the
/// draghandle element.
/// </summary>
/// <param name="dragHandle"></param>
/// <param name="offset">an optional offset value for the initial clickpoint position</param>
internal void ForceWindowDragState(FrameworkElement dragHandle, Point offset)
{
Canvas.SetZIndex(ClickTargetLookup[dragHandle].DragElement, ZOrder++);
CurrentCursor = Cursors.Arrow;
CurrentTransformDelegate = TransformDrag;
var win = (IWindow)ClickTargetLookup[dragHandle];
win.OnDragStarted();
OnWindowDragStart(win);
RootPanel.Cursor = CurrentCursor;
CurrentTransformDelegate = TransformDrag;
CapturedElement = dragHandle;
ClickPoint = dragHandle.GetPosition(RootPanel);
ClickPoint = new Point(ClickPoint.X + offset.X < 0 ? 0 : ClickPoint.X + offset.X, ClickPoint.Y + offset.Y < 0 ? 0 : ClickPoint.Y + offset.Y);
RootPanel.MouseLeftButtonUp += RootPanelMouseLeftButtonUp;
RootPanel.MouseLeave += RootPanelMouseLeave;
//wait for the rest of the layout to update before generating drop targets
//HACK: this isn't very clean, but we need to be "sure" the layout has updated, and
//there is no guarantee at this point that it hasn't updated already.
Observable
.Timer(_dropTargetDelay)
.ObserveOnDispatcher() //prevent cross-thread issues
.Subscribe(_ => GenerateDropTargets(ClickTargetLookup[dragHandle] as IDragDropSource));
}
示例2: ShowMenu
private void ShowMenu(FrameworkElement menuParent, Menu menuToShow, bool hideOtherMenus)
{
if (hideOtherMenus)
HideAllMenus();
var menuParentPosition = menuParent.GetPosition(Application.Current.RootVisual);
var adjustedPosition = new Point(menuParentPosition.X - 1, menuParentPosition.Y - 2);
var pGrid = LayoutContext != null ? LayoutContext.FindElement<Grid>() : MenuLayer;
ChangeLayoutHitTest(false);
pGrid.Children.Add(_cover);
_cover.Click += CoverClick;
MenuLayer.Children.Add(menuToShow);
menuToShow.AbsoluteTransformPositionTo(adjustedPosition, Application.Current.RootVisual);
_hoverShow = true;
if (_isWindowBaseMenu)
AddProxyMenuUI(menuToShow);
}