You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.4 KiB
35 lines
1.4 KiB
using System;
|
|
using System.Windows;
|
|
|
|
namespace Microsoft.Windows.Controls.Core.Utilities
|
|
{
|
|
public class ContextMenuUtilities
|
|
{
|
|
public static readonly DependencyProperty OpenOnMouseLeftButtonClickProperty = DependencyProperty.RegisterAttached("OpenOnMouseLeftButtonClick", typeof(bool), typeof(ContextMenuUtilities), new FrameworkPropertyMetadata(false, OpenOnMouseLeftButtonClickChanged));
|
|
public static void SetOpenOnMouseLeftButtonClick(FrameworkElement element, bool value)
|
|
{
|
|
element.SetValue(OpenOnMouseLeftButtonClickProperty, value);
|
|
}
|
|
public static bool GetOpenOnMouseLeftButtonClick(FrameworkElement element)
|
|
{
|
|
return (bool)element.GetValue(OpenOnMouseLeftButtonClickProperty);
|
|
}
|
|
|
|
public static void OpenOnMouseLeftButtonClickChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
var control = (FrameworkElement)sender;
|
|
if ((bool)e.NewValue)
|
|
{
|
|
control.PreviewMouseLeftButtonDown += (s, args) =>
|
|
{
|
|
if (control.ContextMenu != null)
|
|
{
|
|
control.ContextMenu.PlacementTarget = control;
|
|
control.ContextMenu.IsOpen = true;
|
|
}
|
|
};
|
|
}
|
|
//TODO: remove handler when set to false
|
|
}
|
|
}
|
|
}
|
|
|