C# 扫描二维码时显示Json列表中的项目
我有JSON格式的列表,我正在反序列化它。看起来是这样的:C# 扫描二维码时显示Json列表中的项目,c#,json,xamarin,C#,Json,Xamarin,我有JSON格式的列表,我正在反序列化它。看起来是这样的: [ { "Nazwa": "Czekolada mleczna Sport & Fitness", "Opis": "Przykładowy opis produktu Czekolada mleczna Sport & Fitness", "Zdjecie": "https://www.friars.co.uk/images/lindt-gold-milk-chocolate-bar-p50
[
{
"Nazwa": "Czekolada mleczna Sport & Fitness",
"Opis": "Przykładowy opis produktu Czekolada mleczna Sport & Fitness",
"Zdjecie": "https://www.friars.co.uk/images/lindt-gold-milk-chocolate-bar-p504-7263_image.jpg",
"WW": 0.28,
"WBT": 0.22,
"Energia": 31.8125,
"Tluszcz": 2.19375,
"Weglowodany": 3.225,
"Blonnik": 0.11875,
"Bialko": 0.45625,
"Zelazo": 0.1875,
"Wapn": 15.5,
"Code": "czokolate_1"
},
{
"Nazwa": "Czekolada mleczna Sport & Fitness2",
"Opis": "Przykładowy opis produktu Czekolada mleczna Sport & Fitness2",
"Zdjecie": "https://vaya.in/recipes/wp-content/uploads/2018/02/Milk-Chocolate-1.jpg",
"WW": 0.16,
"WBT": 0.21,
"Energia": 28.5625,
"Tluszcz": 2.19375,
"Weglowodany": 2.94375,
"Blonnik": 0.4875,
"Bialko": 0.34375,
"Zelazo": 0.8125,
"Wapn": 0,
"Code": "czokolate_2"
}
]
我正在使用ZXing.Net.Mobile.Forms扫描二维码。要处理结果,我有以下代码:
public Item item { get; set; }
item.Code是JSON列表中分配给item的值,如果我使用,QR码也有这个值
Device.BeginInvokeOnMainThread(async () =>
{
string wynik = result.Text;
await DisplayAlert("Wyszukaj?", wynik, "OK");
}
});
它显示这个值代码。我想让它显示包含所有值的详细页面,但只有当您单击列表中的项时,它才会将该项的所有值发送到ItemDetailPage
项目页
ItemDetailPage
我希望它移动到ItemDetailPage,其中包含与二维码具有相同代码值的项目详细信息
或
我希望它显示的项目页面,只有那些项目的代码值作为二维码。
我尝试过使用类似searchbar的东西,但无法使用JSON列表从列表中选择单个项目,假设项目是一个列表 选择所有匹配项
var allitems = items.Where(x => x.Code == result.Text).ToList();
你是在问如何在列表中找到与扫描代码匹配的项目吗?@Jason是的,这就是我的意思,如果我不清楚,很抱歉。还有一个项目与一个QR代码匹配。我建议你将一个项目传递到ItemDetailPage,而不是详细属性。@JackHua MSFT我尝试过这样做,但对我无效,这就是为什么我使用详细属性我在ItemDetailPageI中只有Observablecollection我试过你说的,现在看起来是这样的:public obbservableCollection items{get;set;}public void Handle_OnScanResultResult结果{Device.BeginInvokeOnMainThread=>{var item=items.FirstOrDefaultx=>x.Code=result.Text;};}我有两个错误,我不能将字符串转换为bool,这一个:CS1662 C不能将lambda表达式转换为预期的委托类型,因为块中的一些返回类型不能隐式转换为委托返回类型为什么要这样做?这不是一个UI操作。它只是在列表中查找匹配的数据。然后可以将该数据传递到UI页面。还要检查=vs==好的,所以我有一个类似于这个公共异步无效句柄的东西,比如canResultResult{var item=items.FirstOrDefaultx=>x.Code==result.Text;wait Navigation.PushAsyncnew ItemPage;}但是我不知道应该将这些数据传递到哪里,我假设是ItemPage还是ItemsViewModel?ItemDetailPage
async void OnItemSelected(object sender, SelectedItemChangedEventArgs args)
{
if (!(args.SelectedItem is Item item))
return;
await Navigation.PushAsync(new ItemDetailPage(item.Nazwa, item.Opis, item.Zdjecie, item.WW, item.WBT, item.Energia, item.Tluszcz, item.Weglowodany, item.Blonnik, item.Bialko, item.Zelazo, item.Wapn, item.Code));
// Manually deselect item.
ItemsListView.SelectedItem = null;
}
public ItemDetailPage(string Nazwa, string Opis, string Zdjecie, float WW, float WBT, float Energia, float Tluszcz, float Weglowodany, float Blonnik, float Bialko, float Zelazo, float Wapn, string Code)
{
InitializeComponent();
tytul.Title = Nazwa;
nazwa.Text = Nazwa;
opis.Text = Opis;
foto.Source = ImageSource.FromUri(new Uri(Zdjecie));
ww_item.Text = WW.ToString();
wbt_item.Text = WBT.ToString();
energia_item.Text = Energia.ToString();
tluszcz_item.Text = Tluszcz.ToString();
weglowodany_item.Text = Weglowodany.ToString();
blonnik_item.Text = Blonnik.ToString();
bialko_item.Text = Bialko.ToString();
zelazo_item.Text = Zelazo.ToString();
wapn_item.Text = Wapn.ToString();
}
using System.Linq;
var item = items.FirstOrDefault(x => x.Code == result.Text);
var allitems = items.Where(x => x.Code == result.Text).ToList();