Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
11440f3
Rename all accelerator things to keyboardAccelerator - first pass
rachelkang Aug 14, 2023
56b70dc
Remove original PR API changes and tweak more stuff
rachelkang Aug 17, 2023
312a281
Merge branch 'main' into rename-keyboard-accelerators
rachelkang Aug 17, 2023
0ed339d
Merge branch 'main' into rename-keyboard-accelerators
rachelkang Aug 18, 2023
45709b2
Merge branch 'main' into rename-keyboard-accelerators
rachelkang Aug 22, 2023
480c15d
Merge branch 'main' into rename-keyboard-accelerators
rachelkang Aug 22, 2023
ca3ca72
Update PublicAPI.Unshipped.txt
rachelkang Aug 22, 2023
c862347
Fix API diffs
rachelkang Aug 22, 2023
2a53635
Add more comprehensive MenuFlyoutItem and SubItem samples
rachelkang Aug 22, 2023
f3d993d
Merge branch 'main' into rename-keyboard-accelerators
rachelkang Aug 23, 2023
0d6b661
Merge remote-tracking branch 'origin/main' into rename-keyboard-accel…
mattleibow Aug 25, 2023
2156d4b
Merge branch 'main' into rename-keyboard-accelerators
rachelkang Aug 25, 2023
297c75e
The great KA refactoring
rachelkang Aug 28, 2023
c76112d
Merge branch 'main' into rename-keyboard-accelerators
rachelkang Aug 28, 2023
256e77c
Tweaks for Mac
rachelkang Aug 28, 2023
693bbb6
Hold back AlphaShift and NumericPad support
rachelkang Aug 28, 2023
72fd314
Clean up tests
rachelkang Aug 28, 2023
a8baf44
Respond to feedback
rachelkang Aug 28, 2023
eea29ad
Add null check
rachelkang Aug 28, 2023
75bb996
Respond to feedback
rachelkang Aug 28, 2023
8ef3b8e
Add multiple accelerators sample
rachelkang Aug 28, 2023
7198250
Respond to feedback
rachelkang Aug 29, 2023
7ce795f
Tweak API docs
rachelkang Aug 29, 2023
cfa3a7c
Update PubliAPI.Unshipped files
rachelkang Aug 29, 2023
ed6100e
Merge branch 'main' into rename-keyboard-accelerators
rachelkang Aug 29, 2023
b55b318
Remove Mac prioritization over system behavior
rachelkang Aug 29, 2023
f0543f0
Tweak API updates in Tizen
rachelkang Aug 29, 2023
5271f00
Merge branch 'main' into rename-keyboard-accelerators
mattleibow Aug 30, 2023
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
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,12 @@
<MenuFlyoutItem x:Name="Increment20MenuFlyoutItem" Text="Increment by 20" Clicked="OnIncrementMenuItemClicked" CommandParameter="20" />
<MenuFlyoutItem Text="Increment by 30 (disabled)" Clicked="OnIncrementMenuItemClicked" CommandParameter="30" x:Name="bbb" />
<MenuFlyoutItem Text="Increment by 40 (dynamic enabled/disabled)" Command="{Binding DynamicEnabledCommand}" CommandParameter="40" />
<MenuFlyoutSubItem Text="Menu Item with Suboptions" IsEnabled="False">
<MenuFlyoutItem Text="Increment by 1,000!" Clicked="OnIncrementMenuItemClicked" CommandParameter="1000"></MenuFlyoutItem>
<MenuFlyoutItem Text="Increment by 1,000,000!" Clicked="OnIncrementMenuItemClicked" CommandParameter="1000000"></MenuFlyoutItem>
</MenuFlyoutSubItem>
<MenuFlyoutSubItem Text="More options">
<MenuFlyoutItem Text="Increment by 1,000!" Clicked="OnIncrementMenuItemClicked" CommandParameter="1000"></MenuFlyoutItem>
<MenuFlyoutItem Text="Increment by 1,000,000!" Clicked="OnIncrementMenuItemClicked" CommandParameter="1000000"></MenuFlyoutItem>
<MenuFlyoutSubItem Text="Increment by 500" Clicked="OnIncrementMenuItemClicked" CommandParameter="500">
<MenuFlyoutSubItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Alt" Key="F" />
</MenuFlyoutSubItem.KeyboardAccelerators>
<MenuFlyoutItem x:Name="Increment1000MenuFlyoutItem" Text="Increment by 1,000!" Clicked="OnIncrementMenuItemClicked" CommandParameter="1000"></MenuFlyoutItem>
<MenuFlyoutItem x:Name="Increment1000000MenuFlyoutItem" Text="Increment by 1,000,000!" Clicked="OnIncrementMenuItemClicked" CommandParameter="1000000"></MenuFlyoutItem>
</MenuFlyoutSubItem>
</MenuFlyout>
</FlyoutBase.ContextFlyout>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,13 @@ await DisplayAlert(

ContextMenuWebView.HandlerChanged += OnWebViewHandlerChanged;

MenuItem.SetAccelerator(Increment10MenuFlyoutItem, Accelerator.FromString("alt+ctrl+a"));
MenuItem.SetAccelerator(Increment20MenuFlyoutItem, Accelerator.FromString("ctrl+b"));
MenuItem.SetAccelerator(bbb, Accelerator.FromString("c"));
Increment10MenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator() { Modifiers=KeyboardAcceleratorModifiers.Alt|KeyboardAcceleratorModifiers.Ctrl, Key="A" });
Increment20MenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator() { Modifiers = KeyboardAcceleratorModifiers.Shift, Key = "B" });
Increment1000MenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator() { Modifiers = KeyboardAcceleratorModifiers.Ctrl, Key = "t" });
Increment1000000MenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator() { Modifiers = KeyboardAcceleratorModifiers.Alt, Key = "b" });
bbb.KeyboardAccelerators.Add(new KeyboardAccelerator() { Key = "C" });
}


void OnWebViewHandlerChanged(object sender, EventArgs e)
{
if (ContextMenuWebView.Handler != null)
Expand Down
15 changes: 14 additions & 1 deletion src/Controls/samples/Controls.Sample/Pages/Core/MenuBarPage.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Linq;
using Microsoft.Maui;
using Microsoft.Maui.Controls;

namespace Maui.Controls.Sample.Pages
Expand All @@ -10,7 +11,19 @@ public MenuBarPage()
{
InitializeComponent();

MenuItem.SetAccelerator(CustomFileMenuFlyoutItem, Accelerator.FromString("ctrl+shift+f"));
CustomFileMenuFlyoutItem.KeyboardAccelerators.Add(
new KeyboardAccelerator() {
Modifiers = KeyboardAcceleratorModifiers.Ctrl|KeyboardAcceleratorModifiers.Shift,
Key = "F"
}
);
CustomFileMenuFlyoutItem.KeyboardAccelerators.Add(
new KeyboardAccelerator()
{
Modifiers = KeyboardAcceleratorModifiers.Shift,
Key = "F"
}
);
}

void ItemClicked(object sender, EventArgs e)
Expand Down
27 changes: 21 additions & 6 deletions src/Controls/samples/Controls.Sample/Pages/Core/MenuBarPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@
xmlns:views="clr-namespace:Maui.Controls.Sample.Pages.Base">
<views:BasePage.MenuBarItems>
<MenuBarItem Text="Before File">
<MenuFlyoutItem Text="Cool item 1" />
<MenuFlyoutItem Clicked="ItemClicked" Text="Before File Action" Accelerator="b" />
<MenuFlyoutItem Text="Cool item 1" />
<MenuFlyoutItem Clicked="ItemClicked" Text="Before File Action">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="b" />
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem Text="Cool item 1"></MenuFlyoutItem>
<MenuFlyoutSeparator />
<MenuFlyoutItem Text="Cool item 2 (Disabled)" IsEnabled="False" />
</MenuBarItem>
Expand All @@ -24,10 +27,22 @@
</MenuFlyoutItem>
</MenuBarItem>
<MenuBarItem Text="Custom Menu">
<MenuFlyoutItem Clicked="ItemClicked" Text="Item 1" Accelerator="ctrl+5" />
<MenuFlyoutItem Clicked="ItemClicked" Text="Item 1">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="{OnPlatform WinUI=Ctrl, MacCatalyst=Cmd}" Key="1" />
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutSubItem Clicked="ItemClicked" Text="Sub Menu 1">
<MenuFlyoutItem IconImageSource="mic.png" Clicked="ItemClicked" Text="Flyout item 1" Accelerator="Shift+M" />
<MenuFlyoutItem IconImageSource="coffee.png" Clicked="ItemClicked" Text="Flyout item 2" Accelerator="ALT+C" />
<MenuFlyoutItem IconImageSource="mic.png" Clicked="ItemClicked" Text="Flyout item 1">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Windows,Shift" Key="A" />
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem IconImageSource="coffee.png" Clicked="ItemClicked" Text="Flyout item 2">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Modifiers="Alt" Key="C" />
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
</MenuFlyoutSubItem>
<MenuFlyoutItem Clicked="ItemClicked" Text="Item 2 (Disabled)" IsEnabled="False" />
</MenuBarItem>
Expand Down
69 changes: 25 additions & 44 deletions src/Controls/src/Core/Accelerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,56 +7,37 @@ namespace Microsoft.Maui.Controls
{
/// <include file="../../docs/Microsoft.Maui.Controls/Accelerator.xml" path="Type[@FullName='Microsoft.Maui.Controls.Accelerator']/Docs/*" />
[System.ComponentModel.TypeConverter(typeof(AcceleratorTypeConverter))]
public class Accelerator : IAccelerator
[Obsolete("Use KeyboardAccelerator instead.")]
public class Accelerator
{
const string Separator = "+";
readonly string _text;
readonly List<string> _modifiers;
const char Separator = '+';
string _text;

internal Accelerator(string text, IEnumerable<string> modifiers, string key)
internal Accelerator(string text)
{
if (string.IsNullOrEmpty(text))
throw new ArgumentNullException(nameof(text));

_text = text;
Key = key;
_modifiers = new List<string>(modifiers);
}

/// <summary>
/// Gets the modifiers for the accelerator.
/// </summary>
public IEnumerable<string> Modifiers => _modifiers;

IReadOnlyList<string> IAccelerator.Modifiers => _modifiers;
/// <include file="../../docs/Microsoft.Maui.Controls/Accelerator.xml" path="//Member[@MemberName='Modifiers']/Docs/*" />
[EditorBrowsable(EditorBrowsableState.Never)]
public IEnumerable<string> Modifiers { get; set; }

/// <include file="../../docs/Microsoft.Maui.Controls/Accelerator.xml" path="//Member[@MemberName='Keys']/Docs/*" />
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("Use Key instead.")]
public IEnumerable<string> Keys
{
get => Key is null ? null : new[] { Key };
}

/// <summary>
/// Gets the key for the accelerator.
/// </summary>
public string Key { get; }
public IEnumerable<string> Keys { get; set; }

/// <include file="../../docs/Microsoft.Maui.Controls/Accelerator.xml" path="//Member[@MemberName='FromString']/Docs/*" />
public static Accelerator FromString(string text)
{
if (string.IsNullOrEmpty(text))
throw new ArgumentNullException(nameof(text));

var str = text;
var modifiers = new List<string>();
var key = string.Empty;
var accelarat = new Accelerator(text);

var acceleratorParts = text.Split(new[] { Separator }, StringSplitOptions.None);
var acceleratorParts = text.Split(Separator);

if (acceleratorParts.Length > 1)
{
var modifiers = new List<string>();
for (int i = 0; i < acceleratorParts.Length; i++)
{
var modifierMask = acceleratorParts[i];
Expand All @@ -71,27 +52,27 @@ public static Accelerator FromString(string text)
case "win":
modifiers.Add(modiferMaskLower);
#if NETSTANDARD2_0
text = text.Replace(modifierMask, string.Empty);
text = text.Replace(modifierMask, "");
#else
text = text.Replace(modifierMask, string.Empty, StringComparison.Ordinal);
text = text.Replace(modifierMask, "", StringComparison.Ordinal);
#endif
break;
}
}
accelarat.Modifiers = modifiers;

}

if (!string.Equals(text, Separator, StringComparison.Ordinal))
if (text != Separator.ToString())
{
#if NETSTANDARD2_0
text = text.Replace(Separator, string.Empty);
#else
text = text.Replace(Separator, string.Empty, StringComparison.Ordinal);
#endif
var keys = text.Split(new char[] { Separator }, StringSplitOptions.RemoveEmptyEntries);
accelarat.Keys = keys;
}

key = text;

return new Accelerator(str, modifiers, key);
else
{
accelarat.Keys = new[] { text };
}
return accelarat;
}

/// <include file="../../docs/Microsoft.Maui.Controls/Accelerator.xml" path="//Member[@MemberName='ToString']/Docs/*" />
Expand Down Expand Up @@ -126,4 +107,4 @@ public static implicit operator Accelerator(string accelerator)
return FromString(accelerator);
}
}
}
}
3 changes: 2 additions & 1 deletion src/Controls/src/Core/AcceleratorTypeConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace Microsoft.Maui.Controls
/// in any combination of upper or lower case letters, as well as any available keys on the platform.
/// The returned <see cref="Accelerator" /> has its <see cref="Accelerator.Modifiers" /> array filled with the specified modifiers,
/// and its <see cref="Accelerator.Keys" /> array filled with the remaining keys.</remarks>
[Obsolete("Use KeyboardAccelerator instead.")]
public class AcceleratorTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
Expand All @@ -39,4 +40,4 @@ public override object ConvertTo(ITypeDescriptorContext context, CultureInfo cul
return acc.ToString();
}
}
}
}
36 changes: 36 additions & 0 deletions src/Controls/src/Core/KeyboardAccelerator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
namespace Microsoft.Maui.Controls
{
/// <summary>
/// Represents a shortcut key for a <see cref="MenuFlyoutItem"/>.
/// </summary>
public class KeyboardAccelerator : BindableObject, IKeyboardAccelerator
{
/// <summary>
/// Bindable property for <see cref="Modifiers"/>.
/// </summary>
public static readonly BindableProperty ModifiersProperty = BindableProperty.Create(nameof(Modifiers), typeof(KeyboardAcceleratorModifiers), typeof(KeyboardAccelerator), KeyboardAcceleratorModifiers.None);

/// <summary>
/// Bindable property for <see cref="Key"/>.
/// </summary>
public static readonly BindableProperty KeyProperty = BindableProperty.Create(nameof(Key), typeof(string), typeof(KeyboardAccelerator), null);

/// <summary>
/// Identifies the modifiers for the keyboard accelerator.
/// </summary>
public KeyboardAcceleratorModifiers Modifiers
{
get => (KeyboardAcceleratorModifiers)GetValue(ModifiersProperty);
set => SetValue(ModifiersProperty, value);
}

/// <summary>
/// Identifies the key for the keyboard accelerator.
/// </summary>
public string? Key
{
get => (string?)GetValue(KeyProperty);
set => SetValue(KeyProperty, value);
}
}
}
32 changes: 26 additions & 6 deletions src/Controls/src/Core/Menu/MenuFlyoutItem.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,32 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Input;
using Microsoft.Maui.Controls.StyleSheets;
using System.Collections.ObjectModel;

namespace Microsoft.Maui.Controls
{
public partial class MenuFlyoutItem : MenuItem, IMenuFlyoutItem
{
/// <summary>
/// Represents a MenuFlyoutItem.
/// </summary>
public partial class MenuFlyoutItem : MenuItem, IMenuFlyoutItem
{
/// <summary>
/// Initializes a new MenuFlyoutItem instance.
/// </summary>
public MenuFlyoutItem()
{
var collection = new ObservableCollection<KeyboardAccelerator>();
collection.CollectionChanged += (sender, e) => OnPropertyChanged(nameof(KeyboardAccelerators));
KeyboardAccelerators = collection;
}

/// <summary>
/// Gets the list of KeyboardAccelerators for the MenuFlyoutItem.
/// </summary>
public IList<KeyboardAccelerator> KeyboardAccelerators { get; }

#if PLATFORM
IReadOnlyList<IKeyboardAccelerator>? IMenuFlyoutItem.KeyboardAccelerators => KeyboardAccelerators.AsReadOnly();
#else
IReadOnlyList<IKeyboardAccelerator>? IMenuFlyoutItem.KeyboardAccelerators => new List<IKeyboardAccelerator>(KeyboardAccelerators);
#endif
}
}
6 changes: 3 additions & 3 deletions src/Controls/src/Core/Menu/MenuItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace Microsoft.Maui.Controls
public partial class MenuItem : BaseMenuItem, IMenuItemController, IStyleSelectable, ICommandElement, IMenuElement, IPropertyPropagationController
{
/// <summary>Bindable property for <see cref="Accelerator"/>.</summary>
[Obsolete("Use MenuFlyoutItem.KeyboardAcceleratorsProperty instead.")]
public static readonly BindableProperty AcceleratorProperty = BindableProperty.CreateAttached(nameof(Accelerator), typeof(Accelerator), typeof(MenuItem), null);

/// <summary>Bindable property for <see cref="Command"/>.</summary>
Expand Down Expand Up @@ -41,9 +42,11 @@ public partial class MenuItem : BaseMenuItem, IMenuItemController, IStyleSelecta
public static readonly BindableProperty TextProperty = BindableProperty.Create(nameof(Text), typeof(string), typeof(MenuItem), null);

/// <include file="../../docs/Microsoft.Maui.Controls/MenuItem.xml" path="//Member[@MemberName='GetAccelerator']/Docs/*" />
[Obsolete("Use MenuFlyoutItem.KeyboardAcceleratorsProperty instead.")]
public static Accelerator GetAccelerator(BindableObject bindable) => (Accelerator)bindable.GetValue(AcceleratorProperty);

/// <include file="../../docs/Microsoft.Maui.Controls/MenuItem.xml" path="//Member[@MemberName='SetAccelerator']/Docs/*" />
[Obsolete("Use MenuFlyoutItem.KeyboardAcceleratorsProperty instead.")]
public static void SetAccelerator(BindableObject bindable, Accelerator value) => bindable.SetValue(AcceleratorProperty, value);

internal readonly MergedStyle _mergedStyle;
Expand Down Expand Up @@ -164,9 +167,6 @@ static object CoerceIsEnabledProperty(BindableObject bindable, object value)
return true;
}

IReadOnlyList<IAccelerator> IMenuElement.Accelerators =>
GetAccelerator(this) is Accelerator acc ? new[] { acc } : null;

IImageSource IImageSourcePart.Source => this.IconImageSource;

bool IImageSourcePart.IsAnimationPlaying => false;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#nullable enable
*REMOVED*~Microsoft.Maui.Controls.Accelerator.Modifiers.set -> void
*REMOVED*~Microsoft.Maui.Controls.Accelerator.Keys.set -> void
Microsoft.Maui.Controls.KeyboardAccelerator
Microsoft.Maui.Controls.DragEventArgs.Data.get -> Microsoft.Maui.Controls.DataPackage!
Microsoft.Maui.Controls.DragEventArgs.DragEventArgs(Microsoft.Maui.Controls.DataPackage! dataPackage) -> void
Microsoft.Maui.Controls.DragGestureRecognizer.DragStarting -> System.EventHandler<Microsoft.Maui.Controls.DragStartingEventArgs!>?
Expand All @@ -18,6 +17,12 @@ Microsoft.Maui.Controls.DropEventArgs.Data.get -> Microsoft.Maui.Controls.DataPa
Microsoft.Maui.Controls.DropEventArgs.DropEventArgs(Microsoft.Maui.Controls.DataPackageView! view) -> void
Microsoft.Maui.Controls.Handlers.Compatibility.ViewRenderer<TElement, TPlatformView>.ViewRenderer(Android.Content.Context! context, Microsoft.Maui.IPropertyMapper! mapper, Microsoft.Maui.CommandMapper? commandMapper = null) -> void
Microsoft.Maui.Controls.Handlers.Compatibility.VisualElementRenderer<TElement>.VisualElementRenderer(Android.Content.Context! context, Microsoft.Maui.IPropertyMapper! mapper, Microsoft.Maui.CommandMapper? commandMapper = null) -> void
Microsoft.Maui.Controls.KeyboardAccelerator.Key.get -> string?
Microsoft.Maui.Controls.KeyboardAccelerator.Key.set -> void
Microsoft.Maui.Controls.KeyboardAccelerator.KeyboardAccelerator() -> void
Microsoft.Maui.Controls.KeyboardAccelerator.Modifiers.get -> Microsoft.Maui.KeyboardAcceleratorModifiers
Microsoft.Maui.Controls.KeyboardAccelerator.Modifiers.set -> void
Microsoft.Maui.Controls.MenuFlyoutItem.KeyboardAccelerators.get -> System.Collections.Generic.IList<Microsoft.Maui.Controls.KeyboardAccelerator!>!
Microsoft.Maui.Controls.InputView.CursorPosition.get -> int
Microsoft.Maui.Controls.InputView.CursorPosition.set -> void
Microsoft.Maui.Controls.InputView.FontAttributes.get -> Microsoft.Maui.Controls.FontAttributes
Expand All @@ -38,6 +43,8 @@ Microsoft.Maui.Controls.PointerGestureRecognizer.PointerReleasedCommand.get -> S
Microsoft.Maui.Controls.PointerGestureRecognizer.PointerReleasedCommand.set -> void
Microsoft.Maui.Controls.PointerGestureRecognizer.PointerReleasedCommandParameter.get -> object!
Microsoft.Maui.Controls.PointerGestureRecognizer.PointerReleasedCommandParameter.set -> void
static readonly Microsoft.Maui.Controls.KeyboardAccelerator.KeyProperty -> Microsoft.Maui.Controls.BindableProperty!
static readonly Microsoft.Maui.Controls.KeyboardAccelerator.ModifiersProperty -> Microsoft.Maui.Controls.BindableProperty!
static readonly Microsoft.Maui.Controls.DragGestureRecognizer.CanDragProperty -> Microsoft.Maui.Controls.BindableProperty!
static readonly Microsoft.Maui.Controls.DragGestureRecognizer.DragStartingCommandParameterProperty -> Microsoft.Maui.Controls.BindableProperty!
static readonly Microsoft.Maui.Controls.DragGestureRecognizer.DragStartingCommandProperty -> Microsoft.Maui.Controls.BindableProperty!
Expand All @@ -50,7 +57,6 @@ static readonly Microsoft.Maui.Controls.PointerGestureRecognizer.PointerReleased
virtual Microsoft.Maui.Controls.DragEventArgs.GetPosition(Microsoft.Maui.Controls.Element? relativeTo) -> Microsoft.Maui.Graphics.Point?
virtual Microsoft.Maui.Controls.DragStartingEventArgs.GetPosition(Microsoft.Maui.Controls.Element? relativeTo) -> Microsoft.Maui.Graphics.Point?
virtual Microsoft.Maui.Controls.DropEventArgs.GetPosition(Microsoft.Maui.Controls.Element? relativeTo) -> Microsoft.Maui.Graphics.Point?
~Microsoft.Maui.Controls.Accelerator.Key.get -> string
*REMOVED*override Microsoft.Maui.Controls.RefreshView.MeasureOverride(double widthConstraint, double heightConstraint) -> Microsoft.Maui.Graphics.Size
Microsoft.Maui.Controls.Border.~Border() -> void
Microsoft.Maui.Controls.IWindowCreator
Expand Down
Loading