我正在创建一个Xamarin Forms跨平台应用程序。
我从Flask服务接收到json响应。我希望能够创建一个树状结构,以便在json响应中显示嵌套的“键”,并将“值”存储在json文件中。
json文件可能具有嵌套在许多级别上的条目,我希望能够提出通用解决方案。
我尝试使用JsonConvert.DeserializeObject<FSTDInfo>(JsonContent);
,但遇到一个问题,因为我要通过绑定到“ BGColor”来更新每个“ ItemName”的颜色。此“ BGColor”由每个“键”值字段中的“ taskstatus”字段定义。例如,如果状态为1,则“团队”文本的颜色将为红色。
因此,我不确定如何在xaml文件中指定绑定。 我已经做了类似的事情,但是在嵌套层次上将无法正常工作?
sfTreeView:SfTreeView x:Name="treeView"
ItemsSource="{Binding Menu}">
<sfTreeView:SfTreeView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<Grid x:Name="grid" RowSpacing="0" BackgroundColor="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="1" />
</Grid.RowDefinitions>
<Grid RowSpacing="0" Grid.Row="0">
<Grid Grid.Column="0"
RowSpacing="1"
Padding="1,0,0,0"
VerticalOptions="Center">
<Label LineBreakMode="NoWrap"
Text="{Binding ItemName}"
BackgroundColor="{Binding BGColor}"
VerticalTextAlignment="Center" />
</Grid>
</Grid>
<StackLayout Grid.Row="1" HeightRequest="1"/>
</Grid>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</sfTreeView:SfTreeView.ItemTemplate>
</sfTreeView:SfTreeView>
目前,这就是我所拥有的。
public async void GetJsonDataAsync(string uri)
{
try
{
HttpResponseMessage response = await _client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
string JsonContent = await response.Content.ReadAsStringAsync();
//data = JsonConvert.DeserializeObject<FSTDInfo>(JsonContent);
}
}
我的JSON结构如下:
json_temp = {
"TASKS":
{
'taskid': '10',
'taskstatus': 'in progress',
'Kitchen':
{
'Stove':{
'LED1':
{
'taskid': '11',
'taskstatus':'running'
},
'LED2':
{
'taskid': '12',
'taskstatus':'off',
'LEDSub':
{
'taskid': '13',
'taskstatus':'stable',
'LEDSub2':
{
'taskid': '14',
'taskstatus':'burnt'
}
}
},
'LED3':
{
'taskid': '15',
'taskstatus':'new'
}
},
//other nested layers
}
}
我知道我可以从json结构创建c#类,但是我不想做的事情。我希望能够创建一个像这样的treeview结构:因此,当我们选择Tasks时,我们将基于下面显示的结构获得一个下拉嵌套列表。
>TASKS
>Kitchen
>Stove
LED1
LED2
LED3
....
我真的不知道该怎么做。我正在Xamarin Forms中使用SFtreeview创建树视图。我还尝试了JSON解析方法,该方法可以提取json中的键,但是不起作用。
我希望能够从json对象创建树形视图。我不确定该怎么做。我想为“ taskid”和“ taskstatus”字段创建一个类,因为它们对于所有键都是相同的,并使用绑定将每个树视图节点文本(json的键)的“背景色”绑定到其“状态”字段。
我将不胜感激。我真的迷路了。