ListView中的Entry出现问题。返回的错误是Entry未分配Focus。在ListView中,单击时触发Tap事件时出现Labels,在此事件中,将触发弹出窗口以供用户对数据进行排序,并且我希望添加条目以供用户更改数量。
代码如下所示:
<ListView CachingStrategy="RecycleElement" SeparatorVisibility="Default" ItemsSource="{Binding PartsData}" RowHeight="35" SeparatorColor="#DFDFDF" HasUnevenRows="true" ItemTapped="PartsTapped">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<templates:PartsTemplate/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
PartsTemplate.xaml
<Grid ColumnSpacing="10" Margin="0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<artina:CircleImage Margin="0" Grid.Row="0" Grid.Column="0" Source="{Binding StatusPendent}" BorderColor="White" BackgroundColor="Transparent" Style="{ StaticResource Avatar }" Aspect="AspectFill" HeightRequest="24" WidthRequest="24" HorizontalOptions="Start" VerticalOptions="Start"/>
<StackLayout Grid.Row="0" Grid.Column="1" Spacing="0">
<Label Text="{Binding PartFormat}" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Frame CornerRadius="5" HeightRequest="16" HasShadow="False" Margin="0" Padding="8,6" BackgroundColor="#F1F5F7" BorderColor="#F1F5F7">
<Label HorizontalOptions="CenterAndExpand" Margin="0" Padding="0" HorizontalTextAlignment="Center"
FontSize="11" TextColor="#202020" Text="{Binding CategoryName}" />
</Frame>
</Grid>
</StackLayout>
<Grid Grid.Row="0" Grid.Column="2" HorizontalOptions="EndAndExpand">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<artina:Button Grid.Column="0" Style="{StaticResource ActionButton}" Text="-" />
<Entry Grid.Row="0" x:Name="EntryQtd" Grid.Column="1" Style="{StaticResource EntryCenter}" Text="{Binding Quantity}" Keyboard="Telephone" AutomationId="{Binding Id}" />
<artina:Button Grid.Column="2" Grid.Row="0" Style="{StaticResource ActionButton}" Text="+"/>
</Grid>
<Ellipse Grid.Row="1" Grid.Column="0" Fill="#2BAC76" IsVisible="{Binding ClassificationIsOk}" HeightRequest="10" WidthRequest="10" HorizontalOptions="Center" VerticalOptions="Center" />
<Label Grid.Row="1" Grid.Column="1" Style="{StaticResource LabelBasic}" Text="{Binding ClassificationInformation}" />
</Grid>
MainView.xaml.cs
private void PartsTapped(Object sender, ItemTappedEventArgs e)
{
var selectedItem = ((ListView)sender).SelectedItem;
var tappedItem = (MyViewModel)selectedItem;
NavigationHelper.PushPopupAsync(new PoupClassification(tappedItem.Id));
}
弹出窗口显示正确。但当我点击条目时,应用程序崩溃,报告焦点错误。我如何在不影响弹出窗口打开的情况下分配焦点
0x77 in Xamarin.Forms.Platform.Android.ViewRenderer<Xamarin.Forms.Entry,Xamarin.Forms.Platform.Android.FormsEditText>.Android.Views.View.IOnFocusChangeListener.OnFocusChange at D:\a\1\s\Xamarin.Forms.Platform.Android\ViewRenderer.cs:114,6 C#
0x12 in Android.Views.View.IOnFocusChangeListenerInvoker.n_OnFocusChange_Landroid_view_View_Z at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-31/mcw/Android.Views.View.cs:2844,5 C#
0xB in Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPLZ_V at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:176,5 C#
1条答案
按热度按时间vawmfj5a1#
尝试将
Tapped
事件移至Entry
同层级之Layout
上的TapGestureRecognizer
,并使用CollectionView
。下面以
Grid
和CollectionView
为例。尝试使用注解来注解掉其他可以逐个注解的元素,以便检测可能导致错误的元素: