【发布时间】:2022-01-16 11:56:24
【问题描述】:
我需要使用来自下载的 JSON 的数据填充自定义 ListView。
这是我创建的自定义 ListView:
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<StackLayout Orientation="Vertical" Spacing="5" VerticalOptions="Center">
<StackLayout Orientation="Horizontal">
<Label Text="{Binding TradeDate}" Padding="25,0,0,0" FontSize="19" TextColor="Black"></Label>
<Label Text="{Binding TradeGain}" Padding="0,0,25,0" FontSize="19" FontAttributes="Bold" TextColor="Green" HorizontalOptions="EndAndExpand"></Label>
</StackLayout>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding TradeQty}" Padding="25,0,0,0" FontSize="16"></Label>
<Label Text="{Binding TradeEff}" Padding="0,0,25,0" FontSize="16" HorizontalOptions="EndAndExpand"></Label>
</StackLayout>
</StackLayout>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
然后我将 BindingContext 设置为具有 ItemSource 的类:
<ContentPage.BindingContext>
<local:TradesView>
<x:Arguments>
<x:String>cacca</x:String>
</x:Arguments>
</local:TradesView>
</ContentPage.BindingContext>
这是在 BindingContext 中看到的 TradeView 类:
很遗憾,我无法从这里下载 JSON,因为它需要身份验证,这当然是由另一个 ContentPage 处理的。
public class TradesView
{
public ObservableCollection<Trade> Trades { get; set; }
public TradesView(string trades)
{
Trades = new ObservableCollection<Trade>();
JArray jArray = JArray.Parse(trades);
foreach (JObject trade in jArray){
Trades.Add(new Trade(trade["date"].ToString(), trade["gain"].ToString(), trade["depth"].ToString(), "0"));
}
}
}
问题是现在我不知道如何继续,因为似乎无法将变量作为参数传递给 TradeView 构造函数,该构造函数应该处理 JSON 并用我需要的内容填充 ObservableCollection。
我只是认为我的程序是错误的,我应该放弃很多我所做的,但是我真的不知道如何解决这个问题。
【问题讨论】:
-
回到代码中的较早点。 TradeView 在哪个页面?您是否有在身份验证后创建该页面的方法?请出示该方法。
标签: listview xamarin xamarin.forms