2016-10-13 7 views
0

私は何かを手に入れません。ボタンから、私のDatePickerを開きます。そこで、私はそれをコード化しました:XamarinフォームPCL - DatePickerがUWPで正しく開けない

private void OnDateClicked(object sender, EventArgs ea) 
{ 
    Debug.WriteLine("PLOPPP"); 
    //DatePickerControl.IsVisible = true; 
    //DatePickerControl.Focus(); 
    Device.BeginInvokeOnMainThread(() => { 
     DatePickerControl.Focus(); 
    }); 
} 

ボタンがクリックされた/何も起こらない、何も起こりません。なぜですか?私はちょうど日付セレクタを開くために探していますが、私はそれが動作しない理由を把握することはできません> <

XAMLの一部は、そのように見ている:

<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.../> --> 

をだからここに、 CustomLabelは、現在の日の番号を与えるオブジェクトにバインドされます。その上に、private void OnDateClicked(object sender, EventArgs ea)メソッドを呼び出すButtonがあります。その後、私はすべての日付を保存するだけ

<!-- 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"/> 

アイデアがちょうどセレクタを開くことで、:そして、

、この方法では、私はXAMLの一部に入れている日付ピッカーを開くしようとしています選択した日付の日をLabelに表示します。

ありがとうございます!

+0

情報が不十分です。あなたはMCVEを提供することができますか?(最小、完全で、実証可能な例? – jgoldberger

+0

ありがとう、それは今良いですか? – Emixam23

答えて

1

です。known issueです。多分将来は修正されるでしょう。私はUWPのためのレンダラを使用して、私の回避策を提案することができます:

[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); 
       } 
      } 
     } 
    } 
} 

は、今ではtrueIsFocus変更するたびに表示されていますので、あなたが原因あなたの要件にそれを設定する必要があります。

関連する問題