2017-07-25 121 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