Quantcast
Channel: Windows Presentation Foundation (WPF) forum
Viewing all articles
Browse latest Browse all 18858

WPF Menu Placement Issue

$
0
0

How would I create menu placement mode like this:

I tried this but didnt give me this exact mode

        #region Menu Placement
        // Using a DependencyProperty for menu popup direction...
        public static readonly DependencyProperty MenuPlacementProperty =
                DependencyProperty.RegisterAttached("MenuPlacement",
                typeof(PlacementMode),
                typeof(Window),
                new FrameworkPropertyMetadata(PlacementMode.Bottom, FrameworkPropertyMetadataOptions.Inherits, new PropertyChangedCallback(OnMenuPlacementChanged)));

        private static void OnMenuPlacementChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {
            var menuItem = o as MenuItem;
            if (menuItem != null)
            {
                if (menuItem.IsLoaded)
                {
                    SetPopupPlacement(menuItem, (PlacementMode)e.NewValue);
                }
                else
                {
                    menuItem.Loaded += new RoutedEventHandler((m, v) => SetPopupPlacement(menuItem, (PlacementMode)e.NewValue));
                }
            }
        }
        public static PlacementMode GetMenuPlacement(DependencyObject obj)
        {
            return (PlacementMode)obj.GetValue(MenuPlacementProperty);
        }
        public static void SetMenuPlacement(DependencyObject obj, PlacementMode value)
        {
            obj.SetValue(MenuPlacementProperty, value);
        }

        private static void SetPopupPlacement(MenuItem menuItem, PlacementMode placementMode)
        {
            Popup popup = menuItem.Template.FindName("PART_Popup", menuItem) as Popup;
            if (popup != null)
            {
                popup.Placement = placementMode;
            }
        }
        #endregion


Viewing all articles
Browse latest Browse all 18858

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>