Поскольку вы хотите отображать несколько имен классов для каждой TableData, вам нужно либо создать составную строку всех имен классов, либо использовать ItemsControl для их отображения. Последнее не так эффективно, но также легко выполнимо чисто в XAML, например:
<GridView x:Name="cosmosData" ItemClick="cosmosData_ItemClick" IsItemClickEnabled="True" IsSwipeEnabled="true" SelectionMode="Single">
<GridView.ItemTemplate>
<DataTemplate x:DataType="local:TableData">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="200"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{x:Bind File_Name_At_Upload}" />
<ItemsControl Grid.Column="1" ItemsSource="{x:Bind ObjectsDetected}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding className}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
В качестве альтернативы вы можете добавить другое свойство в модель TableData, например:
public class TableData
{
[JsonProperty(PropertyName = "objectsDetected")]
public List<ObjectsDetected> ObjectsDetected { get; set; }
[JsonProperty(PropertyName = "file_name_at_upload")]
public int File_Name_At_Upload { get; set; }
[JsonIgnore]
public string ClassNames => String.Join(",", ObjectsDetected.Select(o => o.className));
}
А затем в исходном коде свяжите вместо этого свойство ClassNames. (Это объединит значения через запятую, но вы можете использовать \n
вместо ,
, чтобы поместить каждое в свою строку). Вам также необходимо установить TextWrapping в TextBlock