繁体   English   中英

如何使用xamarin表格为Windows 8.1(无Silverlight)手机圆角矩形边缘

[英]How to round rectangle edges for a windows 8.1 (no silverlight) phone using xamarin forms

我正在使用Xamarin表单BoxView控件,并希望在Windows Phone 8.1(没有silverlight)的边缘圆。 为此我在windows phone项目中渲染控件并设置半径,但它似乎没有做任何事情。 下面是我正在使用的渲染代码:

[assembly: ExportRenderer(typeof(RoundedBox), typeof(RoundedBoxRenderer))]

namespace MyProject.WinPhone.Renderer
{
    public class RoundedBoxRenderer : BoxViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<BoxView> e)
        {
            base.OnElementChanged(e);

            var boxRenderer = e.NewElement;
            RoundedBox rb = (RoundedBox)this.Element;

            if (this.Control != null)
            {
                var boxStyle = new Style(typeof(RoundedBox))
                {
                    Setters = {
                        new Setter {Property = RoundedBox.BackgroundColorProperty, Value = rb.BackgroundColor}
                    }
                };

                SetRoundedBoxRadius();

                boxRenderer.Style = boxStyle;
            }
        }

        private void SetRoundedBoxRadius(double radius)
        {
            ((Windows.UI.Xaml.Shapes.Rectangle)this.Control).RadiusX = 50;
        }
    }
}

RoundedBox 是我在PCL项目中生成的控件,它继承自BoxView

根据我的发现,我不知道我做错了什么,因为Xamarin根据以下内容将BoxView转换为Windows Phone中的矩形形状:

https://developer.xamarin.com/guides/xamarin-forms/custom-renderer/renderers/

此形状具有RadiusX和RadiusY属性来设置边框半径:

https://msdn.microsoft.com/library/windows/apps/br243371

关于我缺少什么的任何想法? 谢谢!

您是否尝试设置矩形的笔触(颜色)和StrockThickness 根据你的代码,那些没有设置。 因此,您的矩形实际上没有边框。

您好,只需更新您的SetRoundedBoxRadius函数,如下所述。 你的代码会起作用。

private void SetRoundedBoxRadius()
        {
            ((Windows.UI.Xaml.Shapes.Rectangle)this.Control).RadiusX = 50;
            ((Windows.UI.Xaml.Shapes.Rectangle)this.Control).RadiusY = 50;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM