Использование 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>