我有一个Xamarin应用程序,它在一个页面上只显示多个报告的标题信息。这些报告有一组标准的固定细线,可以在选中时显示,但在检索数据之前,应用程序不知道有多少细线或哪些细线。当点击Overview表单时,该类被序列化(JsonConvert)为字符串,然后在ViewModel中反序列化为Details表单。详细信息页面是一个XAML页面,但内容是用C语言构建的,因为需要检查每个详细信息行(foreach循环),以确定如何构建该行。我的问题是,一旦对象被传递到details表单,我就不知道如何在列表中循环。
模型类
public class TrackWarrant : Form
{
public string IssuedTo { get; set; }
public string AtLocation { get; set; }
public string AuthorityDirection { get; set; }
public string ProceedFrom { get; set; }
public string ProceedTo { get; set; }
public string FormDate { get; set; }
public string OKTime { get; set; }
public List<KeyValuePair<int, string>> TWLines { get; set; }
}
public class TWLines
{
public int FormNo;
public string LineNo;
}
如何序列化数据并将其从标题页传递到详细信息页
async void TrackWarrant_Tapped(object sender, EventArgs e)
{
var ea = e as TappedEventArgs;
if (ea.Parameter != null)
{
var forminfo = JsonConvert.SerializeObject(ea.Parameter);
await Shell.Current.GoToAsync($"trackwarrantinfo?Content={forminfo}");
}
这就是我的ViewModel对传递的数据所做的
[QueryProperty(nameof(Content), nameof(Content))]
internal class TrackWarrantViewModel :BaseViewModel
{
string content = "";
public string Content
{
get => content;
set
{
content = Uri.UnescapeDataString(value ?? string.Empty);
OnPropertyChanged();
PopulateForm(content);
}
}
private TrackWarrant trackwarrant { get; set; }
public TrackWarrant TrackWarrantInfo
{
get => trackwarrant;
set
{
trackwarrant = value;
OnPropertyChanged("TrackWarrantInfo");
}
}
private void PopulateForm(string getcont)
{
var content = JsonConvert.DeserializeObject<TrackWarrant>(getcont);
TrackWarrantInfo = content;
}
}
在我的详细信息页面代码背后,我可以提取数据;这样显示:trackquirts是我公开的类,FormNumber是一个属性,例如上面的我的模型。
var lblFormNo = new Label
{
FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)),
FontAttributes = FontAttributes.Bold,
Margin = new Thickness(5, 0, 0, 0),
};
lblFormNo.SetBinding(Label.TextProperty, "TrackWarrantInfo.FormNumber");
我甚至可以从列表中提取数据,如下所示:
lblTWLine.SetBinding(Label.TextProperty, "TrackWarrantInfo.TWLines[0].Key");
但我不知道有多少行,我真正想做的是在我的网格中构建行(我的内容的基础),通过循环检查每一行细节行,然后显示这些细节。
我在网上搜索了两天,结果一无所获。
提前谢谢。