更改ListView Color会在列表Xamarin上显示奇怪的文本

时间:2018-05-22 12:14:52

标签: c# xaml listview xamarin xamarin.forms

我有一个列在后面的代码中的两个名称列表绑定到xaml文件上的ListView,并在尝试将名称颜色更改为白色后,我在屏幕上显示了这个:

Screenshot of the list

代码:XAML

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="RoseySports.Invite_Page">
    <ContentPage.Content>
        <AbsoluteLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">

            <Image AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0, 0, 1, 1"
               Source="background.jpg" Aspect="AspectFill"/>

                <ScrollView AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0, 0, 1, 1">

                <ContentView Padding="10, 40, 10, 10">

                <ListView x:Name="inviteesp" SeparatorColor="White" BackgroundColor="Transparent" Header="People">
                        <ListView.ItemTemplate>
                            <DataTemplate>

                                <TextCell Text="{Binding names}" TextColor="White"/>

                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </ContentView>
            </ScrollView>
        </AbsoluteLayout>
    </ContentPage.Content>
</ContentPage>

C#(Code-Behind):

using System;
using System.Collections.Generic;

using Xamarin.Forms;

namespace RoseySports
{
    public partial class Invite_Page : ContentPage
    {
        public Invite_Page()
        {
            InitializeComponent();

            var names = new List<String>

            {

                "Mohamed Al-Sabbagh",
                "Adrien Tardy"

            };

            inviteesp.ItemsSource = names;
        }
    }
}

After adding the binding source to the ListView property

3 个答案:

答案 0 :(得分:0)

你确定这是正确的吗?

{Binding names}

尝试

{Binding .}

答案 1 :(得分:0)

您的ListView ItemsSource应绑定到names,并且在模板内部只需使用{Binding}指向元素而不是该元素的属性。< / p>

<ListView x:Name="inviteesp" SeparatorColor="White" BackgroundColor="Transparent" Header="People" ItemsSource="{Binding names}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="{Binding}" TextColor="White"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

目前,您正在尝试将每个字符绑定到每个TextCell,而不是尝试将每个字符串绑定到每个TextCell

答案 2 :(得分:0)

由于您使用的是未显示的Header,但是这个奇怪的文字,我认为问题与此有关。 您确定您拥有所有NuGet包并且使用的是正确的NetStandard版本吗? 您应该检查目标版本,清理,恢复和重建解决方案。

如果这不能帮助您尝试为标题添加明确的布局,例如

<ListView x:Name="listView" Header="TEST HEADER"> <!-- this object will be the bindingcontext -->
  <ListView.HeaderTemplate >
    <DataTemplate>
      <StackLayout Orientation="Horizontal">
        <Label Text="{Binding .}"/> <!-- use the object in Header as the binding source -->
      </StackLayout>
    </DataTemplate>
  </ListView.HeaderTemplate>
  <ListView.ItemTemplate>
    your template goes here

请查看这个xamarin论坛帖子 https://forums.xamarin.com/discussion/126386/setvalue-can-not-convert-system-readonlyspan-to-type-xamarin-forms-color

如果您还没有尝试更新到Xamarin Forms 3,可能会尝试更新。 检查项目中是否有对旧版Xamarin Forms版本的引用  文件(android,ios,...)。