首页 > 解决方案 > 来自 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 中更改它们?

标签: xamarin.formsxamarin.ioscustom-renderer

解决方案


您需要Properties/BindablePropertiesExtendedEditor控件上创建它们,然后使用ExtendedEditorElement您创建的属性在渲染器中访问它们。

当您在ExtendedEditor类中声明了属性时,您可以访问如下所示的属性:

protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
    base.OnElementChanged(e);

    if (e.NewElement != null)
    {
        Control.ScrollEnabled = ExtendedEditorElement.ScrollEnabled;
    }
}

推荐阅读