Xamarin如何使用自定义数据创建customCell

时间:2018-04-16 06:55:42

标签: listview xamarin binding custom-cell

据我所知,我们使用方法" SetBinding"用于获取数据 但是如果我使用自定义类来获取数据,我就不会使用这种方法。我怎么能扩展我的课程呢?

var image = new Image();
var nameLabel = new Label();
var typeLabel = new Label();

//set bindings
nameLabel.SetBinding(Label.TextProperty, new Binding("Name"));
typeLabel.SetBinding(Label.TextProperty, new Binding("Type"));
image.SetBinding(Image.SourceProperty, new Binding("Image"));

我的班级:

public class TextTable
    {
        public string Name { get; set; }
        public string[] Column { get; set; }
        public DataFormat[] Data { get; set; }
     }

2 个答案:

答案 0 :(得分:1)

首先,您应该考虑在XAML中使用UI,它可以很好地分离关注点(UI和数据等)并使绑定变得异常简单(与后面的代码相比)。

Whilst not the same as your question, I posted an answer here which is similar to your question and would be worth reading.

我将发布完整数据绑定方案的示例(使用自定义对象),但请记住,您的问题涉及基本数据绑定原则。您应该去查找许多在线资源,我会在data binding docs for xamarin.

开始。

模特:

public class MyObject
{
    public string Title { get; set; }
    public string Description { get; set; }
    //This class can have any property you want
}

我想在列表视图中显示这些数据:

<ListView ItemsSource="{Binding TheItemSource}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextCell Text="{Binding Title}" Detail="{Binding Description}"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我将此ListView绑定到public ObservableCollection<MyObject>,一旦我设置了它,我就可以将我的UI绑定到MyObject下定义的任何属性。

在您的视图模型中,您需要绑定一个属性,在这种情况下,我们需要ObservableCollection(我们也可以使用List)。

private ObservableCollection<MyObject> _theItemSource;
public ObservableCollection<MyObject> TheItemSource
{
    get
    {
        return _theItemSource;
    }
    set
    {
        //Your view model will need to implement INotifyPropertyChanged
        //I use prism for MVVM so I have a different method than normal to notify the view that a property has changed (its normally OnPropertyChanged()).
        SetProperty(ref _theItemSource, value);
    }
}

现在,在ViewModel中,您应该设置_theItemSource的值,当列表视图要求TheItemSource的值时,将使用该值。

此时,您可以使用数据和数据填充列表。它将显示在我们之前在XAML中定义的列表视图中。

我再次强烈建议您在XAML中创建UI,它使绑定变得更加容易!

答案 1 :(得分:0)

SetBinding是UI对象的方法