如何在Xamarin中创建Entry渲染器?

时间:2015-09-12 15:41:08

标签: xamarin

我想使用Xamarin为输入字段创建渲染器。获得它的最佳方法是什么?我不知道如何获得它,任何帮助都将得到欣赏。

这是我的输入字段,我想为该

创建字体大小渲染器
<Entry x:Name="txtTest"/>

1 个答案:

答案 0 :(得分:0)

这是将填充设置为0并可以设置TextSize属性的Entry示例。

namespace projectname
{
    public class BareEntry : Entry
    {
        public BareEntry ()
        {
        }

        public static readonly BindableProperty TextSizeProperty =
            BindableProperty.Create<BareEntry,int> (X => X.TextSize, 10);

        public int TextSize
        {
            get {return (int)base.GetValue (TextSizeProperty);}
            set {base.SetValue (TextSizeProperty, value);}
        }
    }
}

这部分是在android平台上

using Xamarin.Forms;
using projectname;
using projectname.Droid;
using Xamarin.Forms.Platform.Android;
using MocMSearch.Droid;
using Android.Support.V4.Content;
[assembly: ExportRenderer (typeof (BareEntry), typeof (BareEntryRenderer))]
namespace MocMSearch.Droid
{
    public class BareEntryRenderer : EntryRenderer
    {
        public BareEntryRenderer ()
        {
        }
         protected override void     OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Entry> e)

        {
            base.OnElementChanged(e);

            Recreate ();
        }
        void Recreate()
        {

            if (this.Control == null) return;
            Control.SetPadding (0,0,0,0);

            Control.SetTextSize (Android.Util.ComplexUnitType.Mm,(Element as BareEntry).TextSize);
        }
        protected override void OnElementPropertyChanged (object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged (sender, e);

            if (e.PropertyName == "TextSize") 
            {
                Recreate ();
                this.Invalidate ();
            }

        }

    }
}