【问题标题】:Xamarin.Forms UWP Button renderer CornerRadiusXamarin.Forms UWP 按钮渲染器 CornerRadius
【发布时间】:2018-10-22 10:03:44
【问题描述】:

BorderRadius 属性已被弃用。 Xamarin.Forms UWP 按钮渲染器的 FormsButton 中不存在新的 CorderRadius。

使用已弃用的 BorderRadius 属性会导致应用崩溃。

Control.BorderRadius = Element.CornerRadius; (在 OnElementPropertyChanged 内)

我在 VS 15.7.1 上使用 Xamarin 3.0.0.446417

谢谢。

【问题讨论】:

    标签: button xamarin.uwp cornerradius


    【解决方案1】:

    BorderRadius 属性已被弃用。

    BorderRadiusFormsButton 属性,位于 Xamarin.Forms.Platform.UWP 命名空间下,并且尚未被弃用。它是基于 UWP Button 类的扩展属性,用于渲染角落。

    CornerRadiusButton 属性,位于Xamarin.Formsnamespace 下。而且它是跨平台的属性,你可以在其他平台上渲染。

    自定义按钮渲染中无需重置BorderRadius,直接使用如下即可。

    <Button BorderRadius="15" Text="Click"/>

    因为已经在ButtonRenderer中使用了。

    【讨论】:

    • 在我自己的自定义渲染器中,它具有通常的受保护覆盖​​ void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e);当我运行我的应用程序时,出现以下错误:Xamarin.Forms.Platform.UAP.dll 中发生“System.ArgumentException”类型的异常,但未在用户代码中处理 CornerRadius 上 TopLeft 属性的值无效。
    • 问题已找到。 CornerRadius 具有负值。 if (e.PropertyName == "CornerRadius") { if (Element.CornerRadius >= 0) { base.OnElementPropertyChanged(sender, e); } }
    • 您可以在此处发布您的答案或更新我的答案并添加您的更新,然后接受方便的人稍后访问此主题,感谢您的理解。
    【解决方案2】:

    CornerRadius 的负值会导致应用崩溃。

    protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
    
        if (e.PropertyName == "CornerRadius")
        {
    
            if (Element.CornerRadius >= 0)
            {
                base.OnElementPropertyChanged(sender, e);
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多