Xamarin.forms 如何在xamarin表单中创建具有不可单击标题的列表视图
我需要使用xamarin表单中的列表视图创建一个带有描述的标题 我需要在列表视图中为标题和详细信息使用单独的样式 我正在尝试以下代码Xamarin.forms 如何在xamarin表单中创建具有不可单击标题的列表视图,xamarin.forms,Xamarin.forms,我需要使用xamarin表单中的列表视图创建一个带有描述的标题 我需要在列表视图中为标题和详细信息使用单独的样式 我正在尝试以下代码 <ListView RowHeight="74" ItemsSource="{Binding UserEmailList}" IsGroupingEnabled="true"> <ListView.GroupHeaderTemplate> <DataTemplate> <ViewCell
<ListView RowHeight="74" ItemsSource="{Binding UserEmailList}" IsGroupingEnabled="true">
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Vertical">
<BoxView Style="{StaticResource separator}"></BoxView>
<Label Text="{Binding Heading}" Style="{StaticResource labelHeaderTitle}"/>
<BoxView Style="{StaticResource separator}"></BoxView>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding EmailAddress}" Style="{StaticResource labelListItem}">
</Label>
<Image HeightRequest="16" HorizontalOptions="End" VerticalOptions="Center" Source="arrow.png" Margin="0,0,15,0"></Image>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
但是,当我使用标记时,列表视图总是显示为空
请让我知道如何在xamarin表单中使用XAML创建此文件
公共类EmailItemViewModel
{
公共字符串标题{get;set;}
公共bool haseEmailAddress{get;set;}
公共字符串电子邮件地址{get;set;}
}
公共类ProfileEmailAddressViewModel:ProfileDetailsViewModel
{
公共配置文件EmailAddressViewModel()
{
Title=“电子邮件地址”;
LoadUserEmailList();
}
私有列表用户电子邮件列表;
公共列表用户电子邮件列表{
获取{return userEmailList;}
设置
{
if(值!=null)
{
userEmailList=值;
}
}
}
私有void LoadUserEmailList()
{
UserEmailList=新列表();
foreach(Employee.Packages中的var包)
{
EmailItemViewModel EmailItemViewModel=新的EmailItemViewModel();
emailItemViewModel.Heading=package.Employer.Name.ToUpper();
emailItemViewModel.EmailAddress=package.WorkEmailAddress;
emailItemViewModel.HasEmailAddress=HasEmailAddress(package.WorkEmailAddress);
添加(emailItemViewModel);
}
EmailItemViewModel personalEmail=新的EmailItemViewModel();
personalEmail.Heading=“personalEmail”;
personalEmail.EmailAddress=Employee.HomeEmailAddress;
personalEmail.HasEmailAddress=HasEmailAddress(Employee.HomeEmailAddress);
添加(个人电子邮件);
}
}
尝试Listview.Header
这样地
这将仅将完全限定的属性名称显示为标题,而不是值,但在描述中不显示任何内容。另外,所有的标题都是一个列表,然后是空的详细信息列表。感谢您的回复,但列表仍然没有按照预期的方式出现。我已经在查询中创建了一个示例xaml和代码,您能告诉我这里可能缺少什么吗。。用StackLayout
包装标题,我很惊讶它没有抛出编译错误。另外,对于设置,使用可能是更好的方法。当你说“在StackLayout中包装标题”时,请详细说明。对不起,我找不到你。tableview是否可以在XAML中绑定对象列表?HeaderTeamplate ViewCell中有3个视图,将它们包装在StackLayout中。另外,将ViewModel张贴在分组完成的位置。不,不能将列表绑定到TableView。这看起来像一个设置页面,通常没有更多的值,因此建议TableView@Shan已使用查看模型详细信息更新我的查询。您缺少组!!仅仅设置标题
是不够的,您必须专门对ObservableCollection进行分组。看看手术室
public class EmailItemViewModel
{
public string Heading { get; set; }
public bool HasEmailAddress { get; set; }
public string EmailAddress { get; set; }
}
public class ProfileEmailAddressViewModel : ProfileDetailsViewModel
{
public ProfileEmailAddressViewModel()
{
Title = "Email addresses";
LoadUserEmailList();
}
private List<EmailItemViewModel> userEmailList;
public List<EmailItemViewModel> UserEmailList {
get { return userEmailList; }
set
{
if(value != null)
{
userEmailList = value;
}
}
}
private void LoadUserEmailList()
{
UserEmailList = new List<EmailItemViewModel>();
foreach (var package in Employee.Packages)
{
EmailItemViewModel emailItemViewModel = new EmailItemViewModel();
emailItemViewModel.Heading = package.Employer.Name.ToUpper();
emailItemViewModel.EmailAddress = package.WorkEmailAddress;
emailItemViewModel.HasEmailAddress = HasEmailAddress(package.WorkEmailAddress);
UserEmailList.Add(emailItemViewModel);
}
EmailItemViewModel personalEmail = new EmailItemViewModel();
personalEmail.Heading = "PERSONAL EMAIL";
personalEmail.EmailAddress = Employee.HomeEmailAddress;
personalEmail.HasEmailAddress = HasEmailAddress(Employee.HomeEmailAddress);
UserEmailList.Add(personalEmail);
}
}
Try Listview.Header
like this
<ListView RowHeight="74" ItemsSource="{Binding UserEmailList}" IsGroupingEnabled="true">
<ListView.Header>
<BoxView Style="{StaticResource separator}"></BoxView>
<Label Text="{Binding Heading}" Style="{StaticResource labelHeaderTitle}"/>
<BoxView Style="{StaticResource separator}"></BoxView>
</ListView.Header>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding EmailAddress}" Style="{StaticResource labelListItem}">
</Label>
<Image HeightRequest="16" HorizontalOptions="End" VerticalOptions="Center" Source="arrow.png" Margin="0,0,15,0"></Image>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>