我目前正在尝试实现一个以 Android TV 为目标的 Xamarin.Forms 应用程序。我已经简化了我的应用程序以显示我遇到的具体问题。
我有一组通过 CollectionView 显示的项目。我可以使用 D-Pad 控件滚动此 CollectionView 内的项目,这非常好,如通过此屏幕截图所示,如果我使布局边界可见,则“焦点”/“选定”项目是可见的。
除了 CollectionView 上的“ItemSelected”事件之外,没有其他可用的事件,该事件仅在实际按下 Enter 时发生。我试图将“焦点”事件添加到构成此页面的所有元素中,并且没有任何内容被触发。我不确定这里到底“关注”了什么。
这是我的页面:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:viewmodels="clr-namespace:Channels.ViewModels"
x:Class="Channels.MainPage"
x:DataType="viewmodels:ChannelViewModel"
BackgroundColor="{DynamicResource BackgroundColour}">
<StackLayout Orientation="Vertical" Padding="10">
<Label Text="Selected Item" TextColor="White" Margin="0, 0, 10, 10"></Label>
<CollectionView ItemsSource="{Binding Data}">
<CollectionView.ItemsLayout>
<LinearItemsLayout ItemSpacing="5"></LinearItemsLayout>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Padding="5" Spacing="5" BackgroundColor="Red">
<Label Text="Test Text" HorizontalTextAlignment="Center" HorizontalOptions="FillAndExpand" TextColor="White"></Label>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
</ContentPage>
我想确切地知道这里的重点是什么,以及是否有可能做我所说的事情。
我还没有找到很多 Xamarin 用于 Android TV 的示例,因此可能无法执行此类操作。我也尝试在 .NET Maui 中实现相同的代码,但找不到任何可能在这里工作的事件。