用于操作项的 Xamarin 列表



我是Xamarin表单的新手,正在寻找一个控件来列出项目。我想添加/删除/更新带有数据源或没有数据源的项目。我想ListView就是我正在寻找的。我正在寻找一个选项来从代码隐藏的列表中添加/删除项目。到目前为止,我尝试以如下所示的手动方法进行操作。我将控件命名为"Lista",以便能够从代码隐藏引用它。这样我直接添加了项目,但我想更想通过使用背后的代码来填充它。 尽管如此,Lista.Add("something")Lista.Remove("something")我还没有找到选择。请样品建议。当列表数据来自数据源时,我也希望示例。

<ListView x:Name="Lista">
<ListView.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>mono</x:String>
<x:String>monodroid</x:String>
<x:String>mononucleosis</x:String>
</x:Array>
</ListView.ItemsSource>
</ListView>

奖励问题:是否有可以处理两列数据的控件?

你可以做这样的事情:

创建可观察的集合

ObservableCollection<your_object_type> observableCollection = new ObservableCollection<your_object_type>();
observableCollection.Add(your_object);
Lista.Itemsource = observableCollection ;

然后,可以使用 XAML 中的数据绑定来绑定到your_object具有的任何属性:

<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding your_object_property1}" Detail="{Binding your_object_property2}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

为此,有两种可能的方法。首先,将Lista.ItemSource设置为IEnumerable,如字符串列表。然后,每次更改此列表时,都必须"更新"Lista.ItemSource,基本上就是这样:

private void RefreshList()
{
Lista.ItemsSource = null;
Lista.ItemsSource = your_list;
}

我不是这种方法的忠实粉丝,但它有效。

另一种选择是使用ObservableCollection,例如可观察的字符串集合并将其设置为Lista.ItemsSource

// MyList is a property. That's global, so you can access from other methods.
MyList = new ObservableCollection<string>
{
"String 1", "String 2", "String 3"
};
Lista.ItemsSource = MyList;

然后,每次添加、删除或更新列表时,ListView 都会自动更新。这是最好的方法。

最新更新