xamarin.forms - 来自 xaml 的自定义渲染器的 Xamarin 访问属性
问题描述
我有一个用于 xamarin 编辑器的 ios 自定义渲染,我试图Control.ScrollEnabled
在某些页面上将属性设置为 true,在其他页面上设置为 false。
[assembly: ExportRenderer(typeof(ExtendedEditor), typeof(ExtendedEditorRenderer))]
namespace My.iOS.Renderers
{
public class ExtendedEditorRenderer : EditorRenderer
{
public ExtendedEditor ExtendedEditorElement => Element as ExtendedEditor;
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
Control.ScrollEnabled = false;
}
}
}
}
以上是我的客户渲染器代码。如您所见,该ScrollEnabled
属性始终设置为 false。有没有办法让我可以访问这些属性,例如可滚动、边框颜色、背景颜色等,并从 XAML 中更改它们?
解决方案
您需要Properties/BindableProperties
在ExtendedEditor控件上创建它们,然后使用ExtendedEditorElement
您创建的属性在渲染器中访问它们。
当您在ExtendedEditor类中声明了属性时,您可以访问如下所示的属性:
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
Control.ScrollEnabled = ExtendedEditorElement.ScrollEnabled;
}
}
推荐阅读
- python - 更新python字典值并将结果写入json输出
- amazon-web-services - 如何将aws VPC列入远程服务白名单
- angular - “字符串”类型上不存在属性“登录”
- php - 如何向单个客户端发送消息
- dart - 通用函数:不是预期类型的类型
- javascript - Rails/Webpack:如何确保导入的组件可以看到 jquery?
- ios - Xcode 中的构建错误。链接有问题
- docker - 在 Apache Ignite 上为 Docker 启动 WebAgent
- php - 格式错误的 EUR 字符串
- java - 使用 CompareTo 时将字符串转换为长整数