Xamarin表单中的占位符文本对齐

Xamarin表单中的占位符文本对齐,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我不知道如何将占位符文本置于输入框的顶部。 我有一个非常大的输入框,想把占位符文本放在顶部 <Entry Placeholder="Enter notes about the item" Keyboard="Text" VerticalOptions="Start" HeightRequest="80" /> 您需要为每个平台创建一个自定义渲染器,以便对占位符进行如下操作: public class PlaceholderEditor : Editor {

我不知道如何将占位符文本置于输入框的顶部。 我有一个非常大的输入框,想把占位符文本放在顶部

<Entry Placeholder="Enter notes about the item" 
       Keyboard="Text" VerticalOptions="Start" HeightRequest="80" />

您需要为每个平台创建一个自定义渲染器,以便对占位符进行如下操作:

public class PlaceholderEditor : Editor
{
    public static readonly BindableProperty PlaceholderProperty =
        BindableProperty.Create<PlaceholderEditor, string>(view => view.Placeholder, String.Empty);

    public PlaceholderEditor()
    {
    }

    public string Placeholder
    {
        get
        {
            return (string)GetValue(PlaceholderProperty);
        }

        set
        {
            SetValue(PlaceholderProperty, value);
        }
    }
}

public class PlaceholderEditorRenderer : EditorRenderer
{
    public PlaceholderEditorRenderer()
    {
    }

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

        if (e.NewElement != null)
        {
            var element = e.NewElement as PlaceholderEditor;
            this.Control.Hint = element.Placeholder;
        }
    }

    protected override void OnElementPropertyChanged(
        object sender,
        PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender, e);

        if (e.PropertyName == PlaceholderEditor.PlaceholderProperty.PropertyName)
        {
            var element = this.Element as PlaceholderEditor;
            this.Control.Hint = element.Placeholder;
        }
    }
}
公共类占位符编辑器:编辑器
{
公共静态只读BindableProperty占位符属性=
创建(视图=>view.Placeholder,String.Empty);
公共占位符编辑器()
{
}
公共字符串占位符
{
得到
{
返回(字符串)GetValue(占位符属性);
}
设置
{
SetValue(占位符属性、值);
}
}
}
公共类占位符EditorRenderer:EditorRenderer
{
公共占位符EditorRenderer()
{
}
受保护的覆盖无效OnElementChanged(
ElementChangedEventArgs(e)
{
基础。一个要素发生变化(e);
if(例如NewElement!=null)
{
var element=e.NewElement作为占位符编辑器;
this.Control.Hint=element.Placeholder;
}
}
受保护的覆盖无效OnElementPropertyChanged(
对象发送器,
PropertyChangedEventArgs(e)
{
base.OnElementPropertyChanged(发送方,e);
if(e.PropertyName==PlaceholderEditor.PlaceholderProperty.PropertyName)
{
var element=此.element作为占位符编辑器;
this.Control.Hint=element.Placeholder;
}
}
}

无需更多定制,只需在XAML中使用:
HorizontalTextAlignment=“Center”

请添加一些代码/布局(您到目前为止尝试过的),并准确描述您想要的内容。否则,几乎无法帮助您到目前为止尝试了什么?它在android渲染器中运行良好。但是在iOS重新定购器中找不到这个.Control.Hint!!!要执行iOS渲染器,代码将不同,请参阅本页: