据我所知,我们使用方法" 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; }
}
答案 0 :(得分:1)
首先,您应该考虑在XAML中使用UI,它可以很好地分离关注点(UI和数据等)并使绑定变得异常简单(与后面的代码相比)。
我将发布完整数据绑定方案的示例(使用自定义对象),但请记住,您的问题涉及基本数据绑定原则。您应该去查找许多在线资源,我会在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对象的方法