2017-07-25 120 views
1

我有日期选取器,我通过Web服务动态填充它。Xamarin.Forms选取器默认值

<Picker x:Name="picker" Title="Select Something" ItemsSource="{Binding}" ItemDisplayBinding="{Binding Name}"></Picker> 

我设置Title财产之上,但对于UWP它显示为一个标签。我如何将它设置为UWP的默认值/提示?

任何帮助,将不胜感激。

+1

拾荒者没有任何形式的 '占位' 的功能,你就必须有一个您的源绑定中的额外项目可以与您中的其他项目区分开来r源作为默认选定索引。 – Digitalsa1nt

回答

0

由于Digitalsa1nt表示,Picker没有PlaceholderText属性。但是,您可以通过custom renderer添加此属性。

CustomPicker.cs

public class CustomPicker : Picker 
{ 
    public static readonly BindableProperty PlaceHolderProperty = BindableProperty.Create(
propertyName: "PlaceHolder", 
eturnType: typeof(string), 
declaringType: typeof(CustomPicker), 
defaultValue: default(string)); 

    public string PlaceHolder 
    { 
     get { return (string)GetValue(PlaceHolderProperty); } 
     set { SetValue(PlaceHolderProperty, value); } 
    } 

} 

实现CustomPickerRenderer在UWP客户端项目。

CustomPickerRenderer.cs

[assembly: ExportRenderer(typeof(CustomPicker), typeof(CustomPickerRenderer))] 

namespace XamarinPickerDefaultValueTest.UWP 
{ 
    public class CustomPickerRenderer : PickerRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) 
     { 
      base.OnElementChanged(e); 
      var element = Element as CustomPicker; 

      if (Control != null) 
      { 
       Control.PlaceholderText = element.PlaceHolder; 
      } 
     } 

    } 
} 

使用

<local:CustomPicker PlaceHolder="Picker something" x:Name="picker"/> 

enter image description here