如何将Listview标头内的属性绑定到Xamarin表单中完全不同的模型?我将listview标题属性设置为
Header={Binding newModel}
然后使用
<ListView.Header>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding newModel.FullNameLastFirst}" />
</StackLayout>
</ListView.Header>
但这并不能解决任何问题。但我确实将listview项目模型设置为另一个模型,并且工作正常。我需要将listview标头绑定到单独的模型。
答案 0 :(得分:0)
您可以使用x:Reference
扩展程序。 x:Reference
允许您将UIElement的任何属性用于另一个属性(我们将使用BindingContext
)。
即:
您的视图模型:
class YourViewModel
{
public object HeaderModel{get;set;}
public List<object> ListItems{get;set;}
}
您的Xaml页面
<ContentPage x:Name="page">
<ContentPage.BindingContext>
<local.YourViewModel/>
</ContentPage.BindingContext/>
<ListView ItemsSource="{Binding ListItems}">
<ListView.HeaderTemplate>
<DataTemplate>
<Grid BindingContext="{Binding BindingContext.HeaderModel,Source={x:Reference page}}">
<!--Content goes here-->
</Grid>
</DataTemplate>
</ListView.HeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<!--Cell template goes here-->
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
答案 1 :(得分:0)
重要的是要理解,如果您想要执行数据绑定,则不能只填充Header属性。要进行数据绑定,您必须添加标题数据模板。
下面的XAML不会执行任何绑定。这只是在标题中添加内容:
<ListView>
...
<ListView.Header>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding newModel.FullNameLastFirst}" />
</StackLayout>
</ListView.Header>
对数据绑定Xamarin Forms ListView Header使用DataTemplate,如下所示:
<ListView>
...
<ListView.HeaderTemplate>
<DataTemplate>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding newModel.FullNameLastFirst}" />
</StackLayout>
</DataTemplate>
</ListView.Header>