Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions src/Wpf.Ui/Controls/DropDownButton/DropDownButton.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
// All Rights Reserved.

using System.Windows.Controls;
using System.Windows.Input;

// ReSharper disable once CheckNamespace
namespace Wpf.Ui.Controls;
Expand All @@ -15,6 +16,11 @@ public class DropDownButton : Button
{
private ContextMenu? _contextMenu;

public DropDownButton()
{
PreviewMouseLeftButtonUp += OnPreviewMouseLeftButtonUp;
}

/// <summary>Identifies the <see cref="Flyout"/> dependency property.</summary>
public static readonly DependencyProperty FlyoutProperty = DependencyProperty.Register(
nameof(Flyout),
Expand Down Expand Up @@ -87,21 +93,16 @@ protected virtual void OnContextMenuOpened(object sender, RoutedEventArgs e)

protected virtual void OnIsDropDownOpenChanged(bool currentValue) { }

protected override void OnClick()
private void OnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
base.OnClick();

if (_contextMenu is null)
{
return;
}

_contextMenu.SetCurrentValue(MinWidthProperty, ActualWidth);
_contextMenu.SetCurrentValue(ContextMenu.PlacementTargetProperty, this);
_contextMenu.SetCurrentValue(
ContextMenu.PlacementProperty,
System.Windows.Controls.Primitives.PlacementMode.Bottom
);
_contextMenu.SetCurrentValue(ContextMenu.PlacementProperty, System.Windows.Controls.Primitives.PlacementMode.Bottom);
_contextMenu.SetCurrentValue(ContextMenu.IsOpenProperty, true);
}
}