2017-07-25 2 views
1

J'ai sélecteur de date et je suis peuplant dynamiquement via un service Web.Xamarin.Forms Picker Valeur par défaut

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

Je mis la propriété Title comme ci-dessus mais pour UWP il apparaît comme une étiquette. Comment puis-je le définir comme valeur/invite par défaut pour UWP?

Toute aide serait appréciée.

+1

Pickers n'ont pas type de fonctionnalité 'espace réservé', vous devez avoir un élément supplémentaire dans votre liaison source que vous pourriez différencier des autres éléments en vous r source en tant qu'index sélectionné par défaut. – Digitalsa1nt

Répondre

0

Comme l'a dit Digitalsa1nt, Picker n'ont PlaceholderText propriété. Toutefois, vous pouvez ajouter cette propriété via 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); } 
    } 

} 

Mettre en oeuvre CustomPickerRenderer dans votre projet client 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; 
      } 
     } 

    } 
} 

Utilisation

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

enter image description here