Exemple #1
0
        /// <summary>
        /// Updates the ContextMenu's Horizontal/VerticalOffset properties to keep it under the SplitButton.
        /// </summary>
        private void UpdateContextMenuOffsets()
        {
            // Calculate desired offset to put the ContextMenu below and left-aligned to the Button
#if SILVERLIGHT
            Point currentOffset = _contextMenuInitialOffset;
            Point desiredOffset = TransformToVisual(Application.Current.RootVisual).Transform(new Point(0, ActualHeight));
#else
            Point currentOffset = new Point();
            Point desiredOffset = _contextMenuInitialOffset;
#endif
            _contextMenu.HorizontalOffset = desiredOffset.X - currentOffset.X;
            _contextMenu.VerticalOffset   = desiredOffset.Y - currentOffset.Y;
            // Adjust for RTL
            if (FlowDirection.RightToLeft == FlowDirection)
            {
#if SILVERLIGHT
                _contextMenu.UpdateLayout();
                _contextMenu.HorizontalOffset -= _contextMenu.ActualWidth;
#else
                _contextMenu.HorizontalOffset *= -1;
#endif
            }
        }