2017-05-19 3 views
0

私はXamarin.Formsを使用してアプリケーションを実行しています。フレームレイアウトをクリックすると、datePickerを表示する必要があります。その目的のために私はこれをしました。ここで起こっXamarin.FormsのdatePickerをフレームレイアウトをクリックすると表示

XAMLの一部

<Frame Margin="15,0,15,5" HasShadow="false" OutlineColor="{StaticResource TextColorBlue}" BackgroundColor="White" x:Name="selectDate" HorizontalOptions="FillAndExpand"> 
      <StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand"> 
       <DatePicker x:Name="datePicker" IsVisible="false" DateSelected="Handle_DateSelected" TextColor="Maroon" /> 
       <Label Text="Date" FontAttributes="Bold" FontSize="20" HorizontalOptions="Center" TextColor="{StaticResource TextColorBlue}" /> 
       <BoxView HorizontalOptions="FillAndExpand" BackgroundColor="Silver" HeightRequest="1" /> 
       <Grid RowSpacing="1" ColumnSpacing="1" HorizontalOptions="FillAndExpand"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 
        <Label Text="Saturday" FontAttributes="Bold" FontSize="25" Grid.Row="0" Grid.Column="0" HorizontalOptions="Center" VerticalOptions="Center" TextColor="{StaticResource TextColorBlue}" /> 
        <Label Text="May" FontAttributes="Bold" FontSize="25" Grid.Row="0" Grid.Column="1" HorizontalOptions="Center" VerticalOptions="Center" TextColor="{StaticResource TextColorBlue}" /> 
        <Label Text="20" FontAttributes="Bold" FontSize="25" Grid.Row="1" Grid.Column="0" HorizontalOptions="Center" VerticalOptions="Center" TextColor="{StaticResource TextColorBlue}" /> 
        <Label Text="2017" FontAttributes="Bold" FontSize="25" Grid.Row="1" Grid.Column="1" HorizontalOptions="Center" VerticalOptions="Center" TextColor="{StaticResource TextColorBlue}" /> 
       </Grid> 
      </StackLayout> 
      <Frame.GestureRecognizers> 
       <TapGestureRecognizer NumberOfTapsRequired="1" Tapped="Handle_Tapped_DatePicker" /> 
      </Frame.GestureRecognizers> 
     </Frame> 

CSの一部

void Handle_Tapped_DatePicker(object sender, System.EventArgs e) 
    { 
     Debug.WriteLine("Handle_Tapped_DatePicker"); 
     if (datePicker.IsFocused) 
     { 
      Debug.WriteLine("Yes, datePicker is focused"); 
      datePicker.Unfocus(); 
     } 

     datePicker.Focus(); 
    } 

    void Handle_DateSelected(object sender, Xamarin.Forms.DateChangedEventArgs e) 
    { 
     Debug.WriteLine("e.NewDate: " + e.NewDate.ToString()); 
    } 

しかし、何も。 datePickerが表示されません。私はiOSシミュレータでテストしています。これで私を助けてください。

答えて

0

ありがたいことに、私はいくつかの検索の後に答えを得ました。 問題は、device main UI threadを通してdatePickerの焦点を持って来る必要があることです。私はこのように私のコードを変更しました。

Device.BeginInvokeOnMainThread(() => 
     { 
      if (datePicker.IsFocused) 
       datePicker.Unfocus(); 
      datePicker.Focus(); 
     }); 
関連する問題