I have a ListView with 2 control in ViewCell. 1- Entry, 2- Another ListView with Entries.
Now I am facing unique problem.
Case-1: If I tap on Entry inside nested ListView, I am not able to click. It behave like read only.
Case-2: If first I tap on Entry which is not inside nested ListView, I am able to focus on it. After this, I am also able to tap/focus on Entry which is inside the nested ListView.
It means I must tap on the Entry(without nested ListView) first, then I am able to tap or focus on Entry(with nested ListView).
I attached code here Kindly see code and send appropriate answer.
MainPage.Xaml
<ListView Grid.Row="1" HasUnevenRows="True" IsPullToRefreshEnabled="False"
ItemsSource="{Binding MainListViewItemSource}" CachingStrategy="RecycleElement"
ItemTapped="OnListViewItemTapped" ItemSelected="OnListViewItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<local:MyCell/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
MyCell.xaml
<Image Source="{Binding PlusMinusImage}>
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="ListOpenCommand" NumberOfTapsRequired="1"/>
</Image.GestureRecognizers>
</Image>
<StackLayout IsVisible={Binding IsVisible}>
<Label Text="Mainlabel" FontSize="15" FontFamily="Roboto" TextColor="Black"/>
<Entry x:Name="MainEntry" TextColor="Gray" Text="{Binding MainEntryValue}">
<ListView ItemsSource="{Binding MyInnerListViewItemSource}"
ItemTapped="OnListViewItemTapped" ItemSelected="OnListViewItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Margin="0" Text="SampleInnerText" Grid.Column="0"/>
<Entry Margin="0" Text="{Binding SampleInnerTextValue}"
Grid.Column="1"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
MainPage.xaml.cs/MyCell.xaml.cs
private void OnListViewItemSelected(object sender, SelectedItemChangedEventArgs e)
{
(sender as ListView).SelectedItem = null;
return;
}
private void OnListViewItemTapped(object sender, ItemTappedEventArgs e)
{
if (e.Item == null) return;
((ListView)sender).SelectedItem = null;
}
Android Listview Renderer
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (Control!=null)
{
Control.HorizontalScrollBarEnabled = false;
Control.VerticalScrollBarEnabled = false;
Control.Focusable = true;
Control.FocusableInTouchMode = true;
}
}