首页 > 解决方案 > 如果设置了堆栈布局的背景颜色,则突出显示 ListView 的选定项

问题描述

我试图检查列表视图的选定项目(由视图单元组成)在被点击或选择时是否被突出显示。我注意到如果在 viewcell 中使用了 stacklayout,并且如果设置了该 stacklayout 的背景颜色,则突出显示不起作用。当我删除了 backgroundcolor 属性时,Highlight 就可以使用了。

有没有办法绕过这个限制?

<ContentPage.Content>
    <StackLayout Orientation="Vertical" Padding="5"> 
        <ListView x:Name="List" SelectionMode="Single"  ItemsSource="{Binding ListOfStored}" RowHeight="100" SeparatorColor="#2EC022"
                  SeparatorVisibility="Default" HasUnevenRows="True" SelectedItem="{Binding SelectedEntry, Mode=OneWayToSource}" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell  >
                        <StackLayout Orientation="Vertical"  Padding="5" ***BackgroundColor="LightGray">***

                            <Label Text="{Binding Id}"  HorizontalOptions="Start" LineBreakMode="NoWrap" BackgroundColor="LightGray" />
                            <Label Text="{Binding Definition}" HorizontalOptions="StartAndExpand" 
                                    HorizontalTextAlignment="Start" MaxLines="10" LineBreakMode="WordWrap"/>
                            <!--<Label Text="Examples:" FontAttributes="Bold" HorizontalOptions="StartAndExpand"/>
                            <Label Text="{Binding Example1}" HorizontalOptions="StartAndExpand"
                                    MaxLines="10" LineBreakMode="WordWrap"/>
                            <Label Text="{Binding Example2}" HorizontalOptions="StartAndExpand"
                                    MaxLines="10" LineBreakMode="WordWrap"/>-->
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        <StackLayout Orientation="Horizontal" VerticalOptions="End" Padding="5" >
            <Button Text="GetFullList" Command="{Binding GetList}" VerticalOptions="Center"/>
            <Button Text="Delete" VerticalOptions="Center" Command="{Binding DeleteEntry }"/>
        </StackLayout>
    </StackLayout>
</ContentPage.Content>

标签: listviewxamarin.formsxamarin.androidhighlight

解决方案


使用框架并将您的 StackLayout 放入其中,并设置框架的 BackgroundColor = transparent 和 Padding=0。


推荐阅读