首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有Xamarin表单的UWP自定义渲染器

带有Xamarin表单的UWP自定义渲染器
EN

Stack Overflow用户
提问于 2017-07-19 23:12:09
回答 1查看 2.7K关注 0票数 1

我为我的自定义渲染器编写了以下代码。使用的元素是标签,我正在尝试设置圆角边缘的背景颜色。

代码语言:javascript
复制
[assembly: ExportRenderer(typeof(RoundedLabel), typeof(RoundedLabelCustomRenderer))]
namespace MyNamespace.UWP.CustomRenderers
{
public class RoundedLabelCustomRenderer : LabelRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
    {
        base.OnElementChanged(e);
        if (e.NewElement != null)
        {
            var view = (RoundedLabel)e.NewElement;

            Children.Clear();

            var border = new Border
            {
                CornerRadius = new CornerRadius(view.RoundedCornerRadius),
                Background = new SolidColorBrush(view.RoundedBackgroundColor.ToWindows()),
                Child = Control
            };

            Control.Padding = new Windows.UI.Xaml.Thickness(
                                 view.InsidePadding.Left, 
                                 view.InsidePadding.Top, 
                                 view.InsidePadding.Right, 
                                 view.InsidePadding.Bottom);
            Control.Foreground = new SolidColorBrush(view.TextColor.ToWindows());

            Children.Add(border);
        }
    }
}
}

对于按钮(在UWP中是一个复合对象)这样的对象来说,这是很好的,如果它是用“纯”XAML编写的,如下所示

代码语言:javascript
复制
<Border background="gray" cornerradius="12">
     <TextBlock />
</Border>

就能胜任这项工作。

我只是在找乐子和游戏,试图将这两个片段协调在一起。

如果有人指出我做错了什么,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-07-20 18:01:04

您可能正在寻找的是Frame (实际上在UWP上呈现为Border )。Frame让你同时设置背景颜色和边角半径:

代码语言:javascript
复制
<Frame BackgroundColor="Grey" CornerRadius="12" HasShadow="false" Padding="0">
     <Label />
</Frame>

默认情况下,Frame的投影和填充设置为20,因此您必须删除它们才能获得想要的效果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45194615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档