Проблема при рендеринге ListViewItem в Xamarin ListView - PullRequest
0 голосов
/ 23 июня 2019

Использование ListView в Xamarin, в большинстве случаев это работает хорошо, но для некоторых элементов возникает проблема рендеринга, элементы в StackLayout перекрываются (укладываются на ось Z вместо оси Y!), Мне интересночто может быть причиной этого:

Issue

Кажется, что это происходит, когда клетки рециркулируются на другую высоту, которая у них была изначально.

xaml довольно прост, привязка для ListView (сгруппированных) и itemtemplate:

<ListView.ItemTemplate>
    <DataTemplate>
        <ViewCell>
            <StackLayout Padding="10,5" BackgroundColor="{Binding BackgroundColor}">
                <!-- The following IsVisible property is probably what cause 
                     the change of height of cells, and when recycled, 
                     the cells do not resize well -->
                <Label Text="{Binding Date}" TextColor="Black" LineBreakMode="NoWrap" 
                       IsVisible="{Binding Date,Converter={StaticResource INNTBC}}" Style="{DynamicResource ListItemTextStyle}" FontSize="12" />
                <StackLayout Orientation="Horizontal">
                    <Label Text="{Binding Participant.FirstName}" TextColor="Black" LineBreakMode="NoWrap" Style="{DynamicResource ListItemTextStyle}" FontSize="16" />
                    <Label Text="{Binding Participant.LastName}" TextColor="Black" ineBreakMode="NoWrap" Margin="5,0,0,0" Style="{DynamicResource ListItemTextStyle}" FontSize="16" />
                    <Label Text="{Binding Participant.BirthDate}" TextColor="Black" LineBreakMode="NoWrap" Margin="5,0,0,0" Style="{DynamicResource ListItemTextStyle}" FontSize="12" />
                </StackLayout>
                <StackLayout HeightRequest="1" BackgroundColor="LightGray" Margin="20,1,20,1" HorizontalOptions="CenterAndExpand"></StackLayout>
            </StackLayout>
        </ViewCell>
    </DataTemplate>
</ListView.ItemTemplate>

Любая подсказка?

1 Ответ

0 голосов
/ 23 июня 2019

Проблема исходит от CachingStrategy="RecycleElement", примененного к ListView.Высота не пересчитывается при переработке.

Это не оптимально, но в конце я решил ее, установив RowHeight для ListView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...