我做了以下事情。
我注意到并且没想到的是MyHeader的构造函数在我创建ListView时被调用,但是当我设置ContentPage的内容时也是如此。
一些代码来说明:
public class MyPage : ContentPage
{
public MyPage()
{
//layout
var abs = new AbsoluteLayout();
//elements
var myList = new ListView
{
ItemTemplate = new DataTemplate(typeof(MyCell)),
HeaderTemplate = new DataTemplate(typeof(MyHeader)) //will call constructor of MyHeader
};
//bindings
myList.SetBinding<IMyContentPageViewModel>(ListView.ItemsSourceProperty, x => x.GetMyCellsCommand.Execution.Result);
myList.SetBinding<IMyContentPageViewModel>(ListView.HeaderProperty, x => x.MyHeaderViewModel);
//page
abs.Children.Add(myList, new Rectangle( 0.0, 0.0, 300, 300 ));
//set content
Content = abs; //will call constructor of MyHeader as well
}
}
我没有看到任何类似于ItemTemplate的东西,它被调用一次 为什么HeaderTemplate有这样的行为? TKS。