Почему происходит событие «Сосредоточено + не сфокусировано» моего Пикера, когда в той же ViewCell вызывается редактор? - PullRequest
0 голосов
/ 14 января 2020

Использование Xamarin.Forms. У меня есть ListView, содержащий несколько ViewCells, и в каждом из них есть Picker и Editor. При нажатии Editor срабатывает Editor_Focused, но по некоторым причинам также срабатывает Picker_Focused и Picker_Unfocused. Я использую обработчик событий Picker_Unfocused, чтобы добавить некоторые данные в базу данных SQLite, а затем обновить sh ListView, поэтому я не могу запускать его каждый раз при нажатии Editor. После контрольных точек мой метод переподготовки вызывается дважды, потому что Picker_Unfocused также вызывается дважды по неизвестным причинам. Также стоит отметить, что Editor_Completed не сработает независимо от того, что я делаю.

То, что я пробовал:

  • Добавление TapGestureRecognizer к Editor, что установить свойство, которое затем остановит Picker_Unfocused от продолжения его выполнения, но TapGestureRecognizer никогда не срабатывает при нажатии Editor.
  • Назначение значения свойству при срабатывании Editor_Focused, которое будет действовать так же, как описано выше. Editor_Focused сначала срабатывает, но затем оставляет это свойство в состоянии "не стрелять Picker_Unfocused", даже когда Picker действительно необходимо использовать. Противодействие этому, если вернуть свойство в состояние «сделать огонь» в Picker_Focused, не работает, так как порядок: Editor_Focused -> Picker_Focused -> Picker_Unfocused -> Refresh list method.

Обновление: Забыли включить любой код.

ListView определен в XAML.

<ListView x:Name="ListView"
                      HasUnevenRows="True"
                      SelectionMode="None">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                            <StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
                                <StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Margin="0,5,0,0">
                                    <Label Text="{Binding Prop0}" 
                                           TextColor="DodgerBlue" 
                                           VerticalOptions="Center"/>
                                    <Label Text="{Binding Prop1}" 
                                           TextColor="Black" 
                                           HorizontalOptions="StartAndExpand"
                                           VerticalOptions="Center"/>
                                    <Label Text="Task Time:" TextColor="Black" HorizontalOptions="End"
                                       VerticalOptions="Center"/>
                                    <Picker x:Name="Picker" WidthRequest="80"
                                        Title="Enter time"
                                        FontSize="15"
                                        Focused="Picker_Focused"
                                        Unfocused="Picker_Unfocused"
                                        SelectedItem="{Binding Prop2}">
                                        <Picker.ItemsSource>
                                            <x:Array Type="{x:Type x:String}">
                                                <x:String>0.25</x:String>
                                                <x:String>0.50</x:String>
                                                <x:String>0.75</x:String>
                                                <x:String>1.00</x:String>
                                            </x:Array>
                                        </Picker.ItemsSource>
                                    </Picker>
                                </StackLayout>
                                <StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
                                              IsVisible="{Binding Prop3}">
                                    <Label Text="Comments:" TextColor="Black" VerticalOptions="Center"/>
                                    <Editor x:Name="Editor" Text="{Binding Prop4}" TextColor="Black"
                                            VerticalOptions="Center" HorizontalOptions="StartAndExpand" Focused="Editor_Focused"/>
                                </StackLayout>
                            </StackLayout>
                            <ViewCell.ContextActions>
                                    <MenuItem Text="Delete"
                                          x:Name="DeleteButton"
                                          Clicked="DeleteButton_Clicked"
                                          IsDestructive="True"
                                          CommandParameter="{Binding .}"/>
                                </ViewCell.ContextActions>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
...