Image 当hasRows=true时,如何强制Xamarin Forms ListView重新绘制/调整重叠标签的大小

Image 当hasRows=true时,如何强制Xamarin Forms ListView重新绘制/调整重叠标签的大小,image,xaml,listview,xamarin.forms,cell,Image,Xaml,Listview,Xamarin.forms,Cell,我有一个包含listview的页面,其中contentview作为viewcell。contentview有一个图像(实际上是一个cachedimage对象)。listview具有不均匀的行以适应不同的图像高度 不幸的是,标签等对象在加载这些行中的图像后,与每行重叠。我已经读到我应该使用“ForceUpdateSize”,但我不确定在代码中的什么地方放置它(或者它是否可以工作) (另一方面,当我的contentview(viewcell)有一个带星号高度的网格时,没有ovelap,但这会导致行之

我有一个包含listview的页面,其中contentview作为viewcell。contentview有一个图像(实际上是一个cachedimage对象)。listview具有不均匀的行以适应不同的图像高度

不幸的是,标签等对象在加载这些行中的图像后,与每行重叠。我已经读到我应该使用“ForceUpdateSize”,但我不确定在代码中的什么地方放置它(或者它是否可以工作)

(另一方面,当我的contentview(viewcell)有一个带星号高度的网格时,没有ovelap,但这会导致行之间存在大量不必要的间隙)

另外,这是一个contentview,因为我正在使用它,在没有listview的Xamarin页面中重新使用这个XAML和代码

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns:local="clr-namespace:myapp" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="myapp.HomePage">
<ContentPage.Content>
    <ListView x:Name="ListView" HasUnevenRows="true">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <local:MyContentView x:Name="MyContentView">
                    </local:MyContentView>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentPage.Content>



创建一个从ViewCell继承的类,并在ItemTemplate中使用该类而不是ViewCell。在这个类中,您将调用ForceUpdateSize()


但是,如果网格似乎正常工作,这可能不是您的实际问题,尽管存在额外的间距。您可能应该避免在ListView内的网格中使用*高度,而是使用自动或像素高度。

。自动创建重叠。恒星创造了大量的空间。ForceUpdateSize会被反复调用并减慢UI的速度。我有一个解决方法,在这里我设置了fontsize,这减少了视觉重叠的数量,但不会消除它们。在Xamarin中,是否有一种强大的方法可以创建高度不均匀的listview行,而在填充单元格后,这些单元格不会彼此折叠?…我暂时会继续进行黑客攻击
 <?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns:ffimageloading="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="myapp.MyContentView">
<ContentView.Content>
    <StackLayout x:Name="MainLayout">
        <StackLayout Orientation="Horizontal" Margin="10,1">
            <Button Text="username" x:Name="UsernameBtn" Clicked="Username_Clicked" />
            <Button Text="follow" x:Name="FollowBtn" HorizontalOptions="EndAndExpand" Clicked="Follow_Clicked" />
            <Button Text="..." x:Name="MoreBtn" Clicked="More_Clicked" />
        </StackLayout>
        <ffimageloading:CachedImage x:Name="Image" HorizontalOptions="Center" VerticalOptions="Center" DownsampleToViewSize="true" Source="http://loremflickr.com/600/600/nature?filename=simple.jpg">
        </ffimageloading:CachedImage>
        <StackLayout Orientation="Horizontal" Margin="10,0">
            <Button Text="Like" x:Name="LikeBtn" Clicked="Like_Clicked" Image="http://www.endlessicons.com/wp-content/uploads/2014/03/bookmark-icon-2-614x460.png" />
            <Button Text="Comment" x:Name="CommentBtn" Clicked="Comment_Clicked" />
            <Button Text="Share" x:Name="ShareBtn" Clicked="Share_Clicked" />
            <Button Text="Bkmrk" x:Name="BookMarkPostBtn" Clicked="BookmarkPost_Clicked" HorizontalOptions="EndAndExpand" Image="http://www.endlessicons.com/wp-content/uploads/2014/03/bookmark-icon-2-614x460.png" />
        </StackLayout>
        <StackLayout Orientation="Horizontal" Margin="10,0">
            <Label x:Name="LikeCount" Text="1,234" />
            <Label Text="Likes" />
        </StackLayout>
        <Label x:Name="CommentLabel" Text="Comments" />
        <Label x:Name="TagLabel" Text="Tags" />
    </StackLayout>

    <!--
    <Grid ColumnSpacing="5" RowSpacing="5" Margin="5">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <StackLayout Orientation="Horizontal" Margin="10,1" Grid.Row="0" Grid.Column="0" >
            <Button Text="username" x:Name="UsernameBtn" Clicked="Username_Clicked" />
            <Button Text="follow" x:Name="FollowBtn" HorizontalOptions="EndAndExpand" Clicked="Follow_Clicked" />
            <Button Text="..." x:Name="MoreBtn" Clicked="More_Clicked" />

        </StackLayout>

        <ffimageloading:CachedImage Grid.Row="1" Grid.Column="0"  x:Name="Image" HorizontalOptions="Center" VerticalOptions="Center" DownsampleToViewSize="true" Source="http://loremflickr.com/600/600/nature?filename=simple.jpg">
            </ffimageloading:CachedImage>


        <StackLayout Grid.Row="2" Grid.Column="0"  Orientation="Horizontal" Margin="10,0">
            <Button Text="Like" x:Name="LikeBtn" Clicked="Like_Clicked" Image="http://www.endlessicons.com/wp-content/uploads/2014/03/bookmark-icon-2-614x460.png" />
            <Button Text="Comment" x:Name="CommentBtn" Clicked="Comment_Clicked" />
            <Button Text="Share" x:Name="ShareBtn" Clicked="Share_Clicked" />
            <Button Text="Bkmrk" x:Name="BookMarkPostBtn" Clicked="BookmarkPost_Clicked" HorizontalOptions="EndAndExpand" Image="http://www.endlessicons.com/wp-content/uploads/2014/03/bookmark-icon-2-614x460.png" />
        </StackLayout>

        <StackLayout Grid.Row="3" Grid.Column="0"  Orientation="Horizontal" Margin="10,0">
            <Label x:Name="LikeCount" Text="1,234" />
            <Label Text="Likes" />
        </StackLayout>

        <Label Grid.Row="4" Grid.Column="0"  x:Name="CommentLabel" Text="Comments" />
        <Label Grid.Row="5" Grid.Column="0"  x:Name="TagLabel" Text="Tags" />


    </Grid>
    -->

</ContentView.Content>