Xamarin.Forms绑定有效,但文本未显示

时间:2017-01-13 18:17:55

标签: c# listview xamarin data-binding xamarin.forms

我已经尝试将对象列表绑定到listview很长一段时间,但是虽然它按预期工作但我不需要编写itemtemplate(ObservableCollection<string>例如),它不适用于我希望itembinding到列表中对象的字段的列表:

MainPage.xaml.cs中:

ExampleList = new ObservableCollection<ExampleItem>()
{
    new ExampleItem() {Showing = "Item 1"},
    new ExampleItem() {Showing = "Item 2"}
};
ListView.ItemsSource = ExampleList;

MainPage.xaml中:

<ListView x:Name="ListView">
      <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="{Binding Showing}" TextColor="White"></TextCell>
        </DataTemplate>
      </ListView.ItemTemplate>
</ListView>

虽然列表项存在(!),但行中的文本不会显示: Binding Result

我已经尝试过这个解决方案,结果是一样的:Xamarin ListView not displaying any data

解答: 似乎绑定不能(完全)使用字段,变量需要属性

4 个答案:

答案 0 :(得分:2)

确保ItemsSource中的实现INotifyPropertyChanged,并且您绑定的每个属性的setter触发PropertyChanged事件。

除了在ItmsSource的属性设置器上触发PropertyChanged之外。

答案 1 :(得分:1)

您需要设置ItemsSource以将ObservableCollection绑定到ListView

<ListView ItemsSource="{Binding ExampleList}">
  <ListView.ItemTemplate>
    <DataTemplate>
      <TextCell Text="{Binding Showing}" TextColor="White" />
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

还要记住,在使用Xamarin.Forms时,最好遵循MVVM模式。您应该在ViewModel类中使用ObservableCollection,并将其设置为View上的BindingContext

编辑:ObservableCollection似乎调用OnPropertyChange来更新Add方法的UI。只需在设置ItemsSource后将项添加到集合中。那应该是诀窍

ExampleList = new ObservableCollection<ExampleItem>();
ListView.ItemsSource = ExampleList;

ExampleList.Add(new ExampleItem() {Showing = "Item 1"});
ExampleList.Add(new ExampleItem() {Showing = "Item 2"});

答案 2 :(得分:0)

如评论中所述“绑定不适用于字段,它需要属性”。我是xamarin的新手,我很努力。但那是明确答案。

答案 3 :(得分:0)

此问题是旧问题,已经得到很好解决。 但是您也可以通过XAML设置ItemSource。 通过这样做:

<ListView x:Name="ListView" ItemsSource="{Binding ExampleList}">
      <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="{Binding Showing}" TextColor="White"></TextCell>
        </DataTemplate>
      </ListView.ItemTemplate>
</ListView>

这可以帮助避免此类问题?

在此处查看更多信息:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/listview/data-and-databinding

我希望我会有所帮助?