| File: Handlers\Button\ButtonHandler.cs | Web Access |
| Project: src\src\Core\src\Core.csproj (Microsoft.Maui) |
using System; #if __IOS__ || MACCATALYST using PlatformView = UIKit.UIButton; #elif MONOANDROID using PlatformView = Google.Android.Material.Button.MaterialButton; #elif WINDOWS using PlatformView = Microsoft.UI.Xaml.Controls.Button; #elif TIZEN using PlatformView = Tizen.UIExtensions.NUI.Button; #elif (NETSTANDARD || !PLATFORM) || (NET6_0_OR_GREATER && !IOS && !ANDROID && !TIZEN) using PlatformView = System.Object; #endif namespace Microsoft.Maui.Handlers { public partial class ButtonHandler : IButtonHandler { ImageSourcePartLoader? _imageSourcePartLoader; public virtual ImageSourcePartLoader ImageSourceLoader => _imageSourcePartLoader ??= new ImageSourcePartLoader(new ButtonImageSourcePartSetter(this)); public static IPropertyMapper<IImage, IButtonHandler> ImageButtonMapper = new PropertyMapper<IImage, IButtonHandler>() { [nameof(IImage.Source)] = MapImageSource }; public static IPropertyMapper<ITextButton, IButtonHandler> TextButtonMapper = new PropertyMapper<ITextButton, IButtonHandler>() { [nameof(ITextStyle.CharacterSpacing)] = MapCharacterSpacing, [nameof(ITextStyle.Font)] = MapFont, [nameof(ITextStyle.TextColor)] = MapTextColor, [nameof(IText.Text)] = MapText }; public static IPropertyMapper<IButton, IButtonHandler> Mapper = new PropertyMapper<IButton, IButtonHandler>(TextButtonMapper, ImageButtonMapper, ViewHandler.ViewMapper) { [nameof(IButton.Background)] = MapBackground, [nameof(IButton.Padding)] = MapPadding, [nameof(IButtonStroke.StrokeThickness)] = MapStrokeThickness, [nameof(IButtonStroke.StrokeColor)] = MapStrokeColor, [nameof(IButtonStroke.CornerRadius)] = MapCornerRadius }; public static CommandMapper<IButton, IButtonHandler> CommandMapper = new(ViewCommandMapper); public ButtonHandler() : base(Mapper, CommandMapper) { } public ButtonHandler(IPropertyMapper? mapper) : base(mapper ?? Mapper, CommandMapper) { } public ButtonHandler(IPropertyMapper? mapper, CommandMapper? commandMapper) : base(mapper ?? Mapper, commandMapper ?? CommandMapper) { } IButton IButtonHandler.VirtualView => VirtualView; PlatformView IButtonHandler.PlatformView => PlatformView; partial class ButtonImageSourcePartSetter : ImageSourcePartSetter<IButtonHandler> { public ButtonImageSourcePartSetter(IButtonHandler handler) : base(handler) { } } } }