1

我目前正在尝试实现一个以 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 中实现相同的代码,但找不到任何可能在这里工作的事件。

4

1 回答 1

0

当您选择项目或单击项目时,您可以使用GestureRecognizers模板中的触发您想要执行的操作。

   <Label>
            <Label.GestureRecognizers>
                <TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>
            </Label.GestureRecognizers>
        </Label>
于 2021-11-22T05:21:00.053 回答