Xamarin Forms - ListView HeaderTemplate构造函数被调用两次

时间:2016-06-27 12:10:54

标签: listview xamarin.forms

我做了以下事情。

  • 构建ContentPage
  • 创建新的AbsoluteLayout
  • 添加一个新的ListView作为AbsoluteLayout的子级。 ListView的HeaderTemplate属于MyHeader类型
  • 将ContentPage的内容设置为AbsoluteLayout

我注意到并且没想到的是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。

0 个答案:

没有答案