in Samples-NetCore/DotNetPad/DotNetPad.Presentation/Controls/Flyout.cs [43:86]
protected override void OnOpened(EventArgs e)
{
base.OnOpened(e);
var target = (FrameworkElement)PlacementTarget;
var child = (FrameworkElement)Child;
if (HorizontalFlyoutAlignment == HorizontalFlyoutAlignment.Left)
{
if (!SystemParameters.MenuDropAlignment)
{
SetBaseHorizontalOffset(HorizontalOffset);
}
else
{
// Handedness = right handed; shows the context menus on the left side
SetBaseHorizontalOffset(-target.ActualWidth + child.ActualWidth + HorizontalOffset);
}
}
else if (HorizontalFlyoutAlignment == HorizontalFlyoutAlignment.Right)
{
if (!SystemParameters.MenuDropAlignment)
{
SetBaseHorizontalOffset(target.ActualWidth - child.ActualWidth + HorizontalOffset);
}
else
{
// Handedness = right handed; shows the context menus on the left side
SetBaseHorizontalOffset(HorizontalOffset);
}
}
else
{
if (!SystemParameters.MenuDropAlignment)
{
SetBaseHorizontalOffset((target.ActualWidth / 2) - (child.ActualWidth / 2) + HorizontalOffset);
}
else
{
// Handedness = right handed; shows the context menus on the left side
SetBaseHorizontalOffset((-target.ActualWidth / 2) + (child.ActualWidth / 2) + HorizontalOffset);
}
}
child.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}