当我尝试为任何布局类编写自定义渲染器时," Control"属性显示为null。没关系,因为渲染器已经是本机控件的包装器,但在创建效果时会出现问题。所以我不能使用Effects对布局类进行任何自定义,因为未分配Control属性。这是一个错误吗?
答案 0 :(得分:3)
PlatformEffect
类有另一个名为Container
的属性,当Control
为空时,该属性也可用于效果,例如在布局。
答案 1 :(得分:0)
所以我看到了与原帖相同的问题。
我在iOS上继承了PlatformEffect<UIView, UILabel>
。我在调试时控件为null。我将效果更改为继承自PlatformEffect
,然后将控件转换为((UILabel)Control)
,一切都开始有效。
返回空控制
MultilineTruncateLabelEffect : PlatformEffect<UIView, UILabel>
{
protected override void OnAttached()
{
var effect = (MultilineEffect) Element.Effects.FirstOrDefault(e => e is MultilineEffect);
if (effect != null)
{
Control.Lines = effect.Lines;
}
}
}
工作正常
public class MultilineTruncateLabelEffect : PlatformEffect
{
protected override void OnAttached()
{
var effect = (MultilineEffect) Element.Effects.FirstOrDefault(e => e is MultilineEffect);
if (effect != null)
{
((UILabel)Control).Lines = effect.Lines;
}
}
}
答案 2 :(得分:-1)
布局没有渲染器,并且由于它们没有渲染器或本机视图(即没有Control
),因此您无法使用Effect
修改任何内容。