我为我的自定义渲染器编写了以下代码。使用的元素是标签,我正在尝试设置圆角边缘的背景颜色。
[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编写的,如下所示
<Border background="gray" cornerradius="12">
<TextBlock />
</Border>
就能胜任这项工作。
我只是在找乐子和游戏,试图将这两个片段协调在一起。
如果有人指出我做错了什么,我将不胜感激。
发布于 2017-07-20 18:01:04
您可能正在寻找的是Frame
(实际上在UWP上呈现为Border
)。Frame让你同时设置背景颜色和边角半径:
<Frame BackgroundColor="Grey" CornerRadius="12" HasShadow="false" Padding="0">
<Label />
</Frame>
默认情况下,Frame
的投影和填充设置为20,因此您必须删除它们才能获得想要的效果。
https://stackoverflow.com/questions/45194615
复制相似问题