2016-10-13 3 views
0

Ich bekomme nichts, ich möchte, von einer Schaltfläche, öffnen Sie meine DatePicker. Also habe ich das codiert:Xamarin Forms PCL - DatePicker öffnet nicht korrekt auf UWP

Sobald der Knopf vom Benutzer angeklickt/berührt wurde, passiert nichts. Warum? Ich suche nur die Datum Auswahl zu öffnen, aber ich kann nicht herausfinden, warum es nicht> <

Der XAML-Teil wie das sucht funktioniert:

<AbsoluteLayout x:Name="LayoutTools" 
        AbsoluteLayout.LayoutBounds="0.5, 0.05, 0.9, 0.075" 
        AbsoluteLayout.LayoutFlags="All"> 
     <!-- DATE --> 
     <!--<control:SquareLayout x:Name="DateButton" BackgroundColor="{x:StaticResource NL_BlueNight}" ScalingBase="Height" 
          AbsoluteLayout.LayoutBounds="0, 0.5, 0.1, 1" 
          AbsoluteLayout.LayoutFlags="All"/>--> 
     <AbsoluteLayout x:Name="DateButton" BackgroundColor="{x:StaticResource NL_BlueNight}" Opacity="0.8" 
         AbsoluteLayout.LayoutBounds="0, 0.5, 0.1, 1" 
         AbsoluteLayout.LayoutFlags="All"> 
     <control:CustomLabel Text="{Binding DaySelected}" FontFamily="{extension:FontFamily Roboto_Light}" FontSize="20" TextColor="Gray" 
          HorizontalTextAlignment="Center" VerticalTextAlignment="Center" 
          AbsoluteLayout.LayoutBounds="0.5, 0.5, 1, 1" 
          AbsoluteLayout.LayoutFlags="All"/> 
     <Button Clicked="OnDateClicked" BackgroundColor="Transparent" BorderColor="Transparent" 
       AbsoluteLayout.LayoutBounds="0.5, 0.5, 1, 1" 
       AbsoluteLayout.LayoutFlags="All"/> 
     </AbsoluteLayout> 
    </AbsoluteLayout> 
    <!-- <control:CustomDatePicker.../> --> 

Also hier die CustomLabel ist an ein Objekt gebunden, das die Nummer des aktuellen Tages angibt. Darüber befindet sich eine Button, die die private void OnDateClicked(object sender, EventArgs ea) Methode aufrufen.

Dann wird in diesem Verfahren, Ich versuche, die Datepicker ich in der XAML-Teil gesetzt haben zu öffnen:

<!-- code above --> 
    <control:CustomDatePicker x:Name="DatePickerControl" Format="dd-MM-yyyy" Date="{Binding CurrentDate}" IsVisible="False" 
           MinimumDate="{Binding CurrentDate}" 
           FontFamily="{extension:FontFamily Roboto_Light}" FontSize="20" TextColor="White" 
           XAlign="Center" HasBorder="false" BackgroundColor="Transparent" 
           AbsoluteLayout.LayoutBounds="0.5, 0.5, 1, 1" 
           AbsoluteLayout.LayoutFlags="All"/> 

Die Idee ist einfach die Wähler zu öffnen, dann speichere ich alle daten aber nur Zeigen Sie den Tag dieses ausgewählten Datums in der Label an.

Vielen Dank im Voraus!

+0

Nicht genug Info. Kannst du ein MCVE (minimales, komplettes, überprüfbares Beispiel? Http://stackoverflow.com/help/mcve – jgoldberger

+0

Danke, ist es jetzt gut? – Emixam23

Antwort

1

Es ist known issue. Vielleicht wäre es in der Zukunft behoben. Ich konnte meine Abhilfe bei der Verwendung von Renderer für UWP vorschlagen:

[assembly: ExportRenderer(typeof(DatePickerRenderer), typeof(SomeDatePickerRenderer))] 
namespace SuperForms.UWP.Renderers 
{ 
    public class SomeDatePickerRenderer : DatePickerRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.DatePicker> e) 
     { 
      base.OnElementChanged(e); 

      if (Control != null) 
      { 
       // TODO: Focus() doesn't open date picker popup on UWP, it's known issue 
       // on Xamarin.Forms and should be fixed in 2.5. Had to open it manually. 
       var flyout = new DatePickerFlyout() { Placement = FlyoutPlacementMode.Top }; 
       flyout.DatePicked += (s, args) => 
       { 
        Control.Date = args.NewDate; 
       }; 

       FlyoutBase.SetAttachedFlyout(Control, flyout); 
      } 
     } 

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

      if (e.PropertyName == VisualElement.IsFocusedProperty.PropertyName) 
      { 
       if (Element.IsFocused) 
       { 
        FlyoutBase.ShowAttachedFlyout(Control); 
       } 
      } 
     } 
    } 
} 

Jetzt ist es jedes Mal, wenn IsFocus Änderung true dargestellt ist, so dass Sie es bis zu Ihren Anforderungen aufgrund einstellen müssen.

Verwandte Themen