我正在尝试使用Xamarin和MvvmCross将对象列表绑定到iOS中的一个非常简单的表格单元格中,我无法显示任何内容。
如果我使用MvxStandardTableViewSource,我可以看到列表中的项目没有问题,因此问题似乎与数据无关。
我按照N + 1 6.5中显示的说明操作,我的列表中没有出现任何内容。我删除了表格单元格,再次按照说明操作,这次只在单元格中放置一个标签并使用默认的单元格高度。仍然没有。
这是我的观看代码:
var tableView = new UITableView(new RectangleF(0, 50, 320, 500), UITableViewStyle.Plain);
Add(tableView);
var source = new MvxSimpleTableViewSource(tableView, JobListCell.Key, JobListCell.Key);
tableView.Source = source;
var set = this.CreateBindingSet<JobListView, JobListViewModel>();
set.Bind(source).To(vm => vm.Jobs);
set.Apply();
tableView.ReloadData();
这是JobListCell代码:
public partial class JobListCell : MvxTableViewCell
{
public static readonly UINib Nib = UINib.FromName ("JobListCell", NSBundle.MainBundle);
public static readonly NSString Key = new NSString ("JobListCell");
public JobListCell (IntPtr handle) : base (handle)
{
this.DelayBind(() => {
var set = this.CreateBindingSet<JobListCell, JobListItem>();
set.Bind(JobDescriptionLabel).To(item => item.JobDescription);
set.Apply();
});
}
public static JobListCell Create ()
{
return (JobListCell)Nib.Instantiate (null, null) [0];
}
}
这是单元设计器代码,因此您可以看到生成的插座:
[Register ("JobListCell")]
partial class JobListCell
{
[Outlet]
MonoTouch.UIKit.UILabel JobDescriptionLabel { get; set; }
void ReleaseDesignerOutlets ()
{
if (JobDescriptionLabel != null) {
JobDescriptionLabel.Dispose ();
JobDescriptionLabel = null;
}
}
}
这是我要绑定的类:
public class JobListItem
{
public int JobId { get; set; }
public string JobDescription { get; set; }
public string JobAddress { get; set; }
public string JobPriority { get; set; }
public override string ToString()
{
return JobDescription;
}
}
有什么想法吗?
答案 0 :(得分:1)
这似乎是由Xamarin版本和XCode版本之间的不匹配引起的。
当我将Xamarin升级到最新版本(Xamarin.iOS 7.2)然后删除并重新创建单元格文件时,所有内容都按预期开始工作。