C# Listview中的行不工作

C# Listview中的行不工作,c#,ios,listview,xamarin,xamarin.forms,C#,Ios,Listview,Xamarin,Xamarin.forms,我有一个listview,里面有三个不同的单元格内容,其中只有一个通过绑定检查显示在该单元格上。我没有设置视图单元格的高度,而是将其堆栈布局子级的垂直选项设置为“填充”。现在,它可以在android上运行,但在iOs上却无法运行。我已经将HasUnderstance rows设置为true,但是轻敲每个单元格时,我注意到高度是相同的。我将显示xaml代码和项源代码: <ListView x:Name = "lvConversations" Vertic

我有一个listview,里面有三个不同的单元格内容,其中只有一个通过绑定检查显示在该单元格上。我没有设置视图单元格的高度,而是将其堆栈布局子级的垂直选项设置为“填充”。现在,它可以在android上运行,但在iOs上却无法运行。我已经将HasUnderstance rows设置为true,但是轻敲每个单元格时,我注意到高度是相同的。我将显示xaml代码和项源代码:

   <ListView
        x:Name = "lvConversations"
        VerticalOptions = "FillAndExpand"
        HorizontalOptions = "FillAndExpand"
        IsGroupingEnabled = "false"
        SeparatorVisibility = "None"
        HasUnevenRows = "true"
        ItemSelected = "messageSelected"
        BackgroundColor = "#F8F8F8"
        >

        <ListView.ItemTemplate>
            <DataTemplate>
                <local:ScaledViewCell>
                <local:ScaledStackLayout
                    VerticalOptions = "Fill"
                    HorizontalOptions = "FillAndExpand"
                    Orientation = "Vertical"
                    Spacing = "0">

                    <local:ScaledStackLayout
                        VerticalOptions = "Fill"
                        HorizontalOptions = "FillAndExpand"
                        Orientation = "Vertical"
                        Spacing = "0"
                        IsVisible = "{Binding isGroupHeader, Converter = {StaticResource inverter}}"
                        BackgroundColor = "Transparent">

                        <!-- OUTGOING -->
                            <local:ScaledStackLayout
                                HorizontalOptions = "FillAndExpand" Orientation = "Horizontal"
                                IsVisible = "{Binding isOutgoing}">


                                    <local:ScaledStackLayout
                                        VerticalOptions = "Fill"
                                        HorizontalOptions = "EndAndExpand"
                                        BackgroundColor = "Transparent"
                                        Orientation = "Vertical"
                                        Margin = "21,14,15,0"
                                        Spacing = "0">

                                        <local:ScaledStackLayout
                                            Orientation = "Horizontal"
                                            VerticalOptions = "Fill"
                                            HorizontalOptions = "EndAndExpand"
                                            Spacing = "0"
                                            >
                                            <local:CorneredView
                                                CornerRadius = "15"
                                                BackgroundColor = "#d3eaf6"
                                                VerticalOptions = "Fill"
                                                HorizontalOptions = "End"
                                                >
                                                <Label 
                                                    VerticalOptions = "Fill"
                                                    HorizontalOptions = "Fill"
                                                    Text = "{Binding message}"
                                                    FontSize = "10"
                                                    TextColor = "Black"
                                                    Margin = "7,10,7,10"
                                                    LineBreakMode = "WordWrap"
                                                />

                                            </local:CorneredView>
                                            <Image
                                                Margin = "0,11,7,0"
                                                Source = "ic_msg_arrow_outgoing"
                                                WidthRequest = "5"
                                                HeightRequest = "10"
                                                Aspect = "AspectFit"
                                                BackgroundColor = "Transparent"
                                                VerticalOptions = "Start"
                                                />
                                            <ffimageloading:CachedImage
                                                WidthRequest = "37"
                                                HeightRequest = "37"
                                                BackgroundColor = "Transparent"
                                                VerticalOptions = "Start"
                                                Aspect = "AspectFill"
                                                Source = "{Binding sender.imageUrl}"
                                                DownsampleToViewSize =  "true"
                                                DownsampleUseDipUnits = "true"
                                                >

                                                <ffimageloading:CachedImage.Transformations>
                                                <fftransformations:CircleTransformation>
                                                    <x:Arguments>
                                                      <x:Double>2</x:Double>
                                                      <x:String>#FF8A07</x:String>
                                                    </x:Arguments>
                                                </fftransformations:CircleTransformation>
                                                </ffimageloading:CachedImage.Transformations>

                                        </ffimageloading:CachedImage>

                                        </local:ScaledStackLayout>

                                        <Label
                                            Margin = "0,3,0,0"
                                            VerticalOptions = "Center"
                                            HorizontalOptions = "Start"
                                            Text = "{Binding formattedDateSent}"
                                            HeightRequest = "10"
                                            FontSize = "8"
                                            TextColor = "#4D212121"/>
                                    </local:ScaledStackLayout>


                            </local:ScaledStackLayout>

                        <!--INCOMING-->
                        <local:ScaledStackLayout
                            WidthRequest = "284"
                            VerticalOptions = "Fill"
                            BackgroundColor = "Transparent"
                            Orientation = "Vertical"
                            Margin = "15,14,21,0"
                            Spacing = "0"
                            IsVisible = "{Binding isOutgoing, Converter = {StaticResource inverter}}">

                            <local:ScaledStackLayout
                                Orientation = "Horizontal"
                                WidthRequest = "284"
                                VerticalOptions = "Fill"
                                Spacing = "0"
                                >
                                <ffimageloading:CachedImage
                                    WidthRequest = "37"
                                    HeightRequest = "37"
                                    BackgroundColor = "Transparent"
                                    VerticalOptions = "Start"
                                    Aspect = "AspectFill"
                                    Source = "{Binding sender.imageUrl}"
                                    DownsampleToViewSize =  "true"
                                    DownsampleUseDipUnits = "true"
                                    >
                                    <ffimageloading:CachedImage.Transformations>
                                        <fftransformations:CircleTransformation>
                                            <x:Arguments>
                                              <x:Double>2</x:Double>
                                              <x:String>#FF8A07</x:String>
                                            </x:Arguments>
                                        </fftransformations:CircleTransformation>
                                    </ffimageloading:CachedImage.Transformations>
                                </ffimageloading:CachedImage>

                                <Image
                                    Margin = "7,15,0,0"
                                    Source = "ic_msg_arrow_incoming"
                                    WidthRequest = "5"
                                    HeightRequest = "10"
                                    Aspect = "AspectFit"
                                    BackgroundColor = "Transparent"
                                    VerticalOptions = "Start"

                                    />
                                <local:CorneredView
                                    WidthRequest = "235"
                                    VerticalOptions = "Fill"
                                    CornerRadius = "15"
                                    BackgroundColor = "#ECECEC"
                                    IsClippedToBounds = "true"
                                    >
                                    <Label 
                                        VerticalOptions = "Fill"
                                        HorizontalOptions = "FillAndExpand"
                                        Text = "{Binding message}"
                                        FontSize = "10"
                                        TextColor = "Black"
                                        Margin = "7,10,7,10"
                                        LineBreakMode = "WordWrap"
                                    />

                                </local:CorneredView>
                            </local:ScaledStackLayout>

                            <Label
                                Margin = "0,3,0,0"
                                VerticalOptions = "Center"
                                HorizontalOptions = "End"
                                Text = "{Binding formattedDateSent}"
                                HeightRequest = "10"
                                FontSize = "8"
                                TextColor = "#4D212121"/>

                        </local:ScaledStackLayout>

                    </local:ScaledStackLayout>
                    <!--Message Group-->
                    <local:ScaledStackLayout
                        Margin = "0"
                        Padding = "0"
                        Spacing = "0"
                        Orientation = "Vertical"
                        VerticalOptions = "Fill"
                        IsVisible = "{Binding isGroupHeader}"
                        BackgroundColor = "Transparent"
                        >
                        <!--label and button-->
                        <local:ScaledStackLayout
                            Margin = "9,0,9,0"
                            HeightRequest = "19"
                            Orientation = "Horizontal"
                            Padding = "0,5,7,0"
                            BackgroundColor = "Transparent">

                            <Label 
                                Text = "{Binding groupHeaderTitle}"
                                HorizontalOptions = "FillAndExpand"
                                HeightRequest = "8"
                                FontSize = "8"
                                TextColor = "#212121"
                                VerticalTextAlignment = "Center"
                                HorizontalTextAlignment = "Center"
                                BackgroundColor = "Transparent"/>

                        </local:ScaledStackLayout>

                        <BoxView
                            Margin = "9,0,9,0"
                            HorizontalOptions = "FillAndExpand"
                            HeightRequest = "1"
                            BackgroundColor = "#4D212121"/>


                    </local:ScaledStackLayout>

                    </local:ScaledStackLayout>
                </local:ScaledViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>

    </ListView>

2.
#FF8A07
2.
#FF8A07
我还将在android和iOs上附上照片

如您所见,单元格重叠

我用来填充listview的代码如下:

public void OnSuccess(JObject response, BaseAPI caller)
{
    if (Constants.isDebug)
    {

        JObject json = TestData.getTestData("conversation_messages_listed.json");
        response = json;
    }



    ObservableCollection<Message> arrMessages = JsonConvert.DeserializeObject<ObservableCollection<Message>>(response["messages"].ToString(), new JsonSerializerSettings()
    {
        NullValueHandling = NullValueHandling.Ignore,
        MissingMemberHandling = MissingMemberHandling.Ignore
    });

    lvConversations.ItemsSource = arrMessages;
}
public void OnSuccess(JObject响应,BaseAPI调用方)
{
if(常量.isDebug)
{
JObject json=TestData.getTestData(“对话消息列表.json”);
response=json;
}
ObservableCollection arrMessages=JsonConvert.DeserializeObject(响应[“messages”].ToString(),新的JsonSerializerSettings()
{
NullValueHandling=NullValueHandling.Ignore,
MissingMemberHandling=MissingMemberHandling.Ignore
});
lvConversations.ItemsSource=arrMessages;
}

请帮助,我是xamarin的新手。

默认情况下,这些行在iOS上不起作用。见此:

iOS不支持自动调整行单元格大小,必须设置ListView.RowHeight或Cell.Height。不幸的是,我们并没有明确禁止在Android或Windows Phone上使用这一功能(在没有我们干预的情况下,它可以正常工作),这让一些人相信iOS在这方面是有缺陷的

不幸的是,这是iOS平台的一个限制,因此是预期的行为

查看下表也可能会有所帮助

当应用程序开发人员将ListView.Rows属性设置为true时,列表视图的行为仍取决于ListView.RowHeight属性。首先,如果开发人员未设置ListView.RowHeight属性或将其设置为-1,则列表视图项将自动调整大小以适合其内容。如上所述,这是ListView.HasRows值为true的所需行为和预期用例。其次,如果开发人员将ListView.RowHeight属性设置为0或-1以外的负值,则ListView中的所有行,无论其内容的高度如何,都将具有系统的默认高度。第三,也是最后一点,如果开发人员将ListView.RowHeight设置为正值,则ListView中的所有行,无论其内容的高度如何,都将与ListView.RowHeight一样高,就像ListView.rows被设置为false一样


单击后,您可以调用
ForceUpdateSize()
,这将修复此问题:

var clicked = (StackLayout)sender;
            ((ViewCell)((Grid)((StackLayout)((PancakeView)((StackLayout)clicked.Parent).Parent).Parent).Parent).Parent).ForceUpdateSize();

如果没有ScaledStackLayout、ScaledViewCell和CorneredView的代码,很难说,如果您想提供示例来重现问题,它可能会加快解决速度。这些只是Stacklayout、viewcell和frame的简单子类。除了根据设备屏幕尺寸调整大小外,与超类相比没有太多变化。我在应用程序的其他页面上使用了它,所以我很确定它不会出现在导致问题的页面上。我需要编写大量代码来重现(message类、inveter等)。如果你仍然需要帮助,请提供样品项目。