You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求推荐.NET MAUI中类似AiForms.Effects的替代类库

.NET MAUI 实现 Entry 自定义样式的替代方案

方案一:利用内置控件组合实现

通过Frame或Border(.NET MAUI 6+原生支持)包裹Entry,直接借助容器控件的属性实现圆角、边框效果:

  • 基础样式示例:
<Border Stroke="#CCCCCC" StrokeThickness="1" CornerRadius="10" Padding="0">
    <Entry BackgroundColor="Transparent" />
</Border>
  • 结合视觉状态实现交互样式:
<Border>
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="CommonStates">
            <VisualState x:Name="Normal">
                <VisualState.Setters>
                    <Setter Property="Stroke" Value="#CCCCCC" />
                </VisualState.Setters>
            </VisualState>
            <VisualState x:Name="Focused">
                <VisualState.Setters>
                    <Setter Property="Stroke" Value="#007AFF" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Entry BackgroundColor="Transparent" />
</Border>

方案二:自定义Entry控件与Handler

如果需要更灵活的平台定制,可创建自定义Entry并通过Handler修改原生控件属性:

  1. 定义自定义Entry类:
public class CustomEntry : Entry
{
    public static readonly BindableProperty CornerRadiusProperty =
        BindableProperty.Create(nameof(CornerRadius), typeof(float), typeof(CustomEntry), 0f);

    public static readonly BindableProperty BorderWidthProperty =
        BindableProperty.Create(nameof(BorderWidth), typeof(float), typeof(CustomEntry), 0f);

    public static readonly BindableProperty BorderColorProperty =
        BindableProperty.Create(nameof(BorderColor), typeof(Color), typeof(CustomEntry), Colors.Gray);

    public float CornerRadius
    {
        get => (float)GetValue(CornerRadiusProperty);
        set => SetValue(CornerRadiusProperty, value);
    }

    public float BorderWidth
    {
        get => (float)GetValue(BorderWidthProperty);
        set => SetValue(BorderWidthProperty, value);
    }

    public Color BorderColor
    {
        get => (Color)GetValue(BorderColorProperty);
        set => SetValue(BorderColorProperty, value);
    }
}
  1. 配置平台Handler(在MauiProgram.cs中):
  • 安卓端:
Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping("CustomEntryBorder", (handler, view) =>
{
    if (view is CustomEntry customEntry)
    {
        var nativeEntry = handler.PlatformView;
        var drawable = new GradientDrawable();
        drawable.SetShape(ShapeType.Rectangle);
        drawable.SetCornerRadius(customEntry.CornerRadius);
        drawable.SetStroke((int)customEntry.BorderWidth, customEntry.BorderColor.ToAndroid());
        nativeEntry.Background = drawable;
        nativeEntry.SetPadding(10, 0, 10, 0);
    }
});
  • iOS端:
Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping("CustomEntryBorder", (handler, view) =>
{
    if (view is CustomEntry customEntry)
    {
        var nativeField = handler.PlatformView;
        nativeField.Layer.CornerRadius = customEntry.CornerRadius;
        nativeField.Layer.BorderWidth = customEntry.BorderWidth;
        nativeField.Layer.BorderColor = customEntry.BorderColor.ToCGColor();
        nativeField.ClipsToBounds = true;
        nativeField.LeftView = new UIView(new CGRect(0, 0, 10, nativeField.Frame.Height));
        nativeField.LeftViewMode = UITextFieldViewMode.Always;
    }
});
  1. XAML中使用:
<local:CustomEntry CornerRadius="10" BorderWidth="1" BorderColor="#CCCCCC" />

方案三:借助.NET MAUI社区工具包

社区工具包提供了丰富的扩展能力,可使用Entry相关的扩展或控件,比如通过Border控件快速实现样式,效果和方案一类似,但工具包还提供更多交互效果支持。

内容的提问来源于stack exchange,提问作者DLx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:01:21