C# 将多个下层对象绑定到listview中

C# 将多个下层对象绑定到listview中,c#,xaml,xamarin.forms,C#,Xaml,Xamarin.forms,我正在为大学创建一个健身应用程序,我正在努力将多个对象返回到列表视图中,而不硬编码它们在集合中的位置,如下面我的数据模板代码所示 XAML数据模板代码: <ContentView.Resources> <DataTemplate x:Key="WorkoutTemplate"> <ViewCell> <Grid> <Grid.ColumnDefinitions>

我正在为大学创建一个健身应用程序,我正在努力将多个对象返回到列表视图中,而不硬编码它们在集合中的位置,如下面我的数据模板代码所示

XAML数据模板代码:

<ContentView.Resources>
<DataTemplate x:Key="WorkoutTemplate">
    <ViewCell>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="300"></ColumnDefinition>
                <ColumnDefinition Width="75"></ColumnDefinition>
                <ColumnDefinition Width="75"></ColumnDefinition>
                <ColumnDefinition Width="75"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Label Grid.Row="0" Grid.Column="0" Text="{Binding Workout.WorkoutExercises[0].Exercise.ExerciseName}"/>
            <Label Grid.Row="0" Grid.Column="1" Text="{Binding Workout.WorkoutExercises[0].Exercise.ExerciseSetExercises[0].ExerciseSet.SetNumber}"/>
            <Label Grid.Row="0" Grid.Column="2" Text="{Binding Workout.WorkoutExercises[0].Exercise.ExerciseSetExercises[0].ExerciseSet.RepsCompleted}"/>
            <Label Grid.Row="0" Grid.Column="3" Text="{Binding Workout.WorkoutExercises[0].Exercise.ExerciseSetExercises[0].ExerciseSet.WeightLifted}"/>
        </Grid>
    </ViewCell>
</DataTemplate>
我想绑定标签文本,但不指定如下位置: Text=“{Binding Workout.WorkoutExercises.Exercise.ExerciseName}”
并让listview填充训练中的所有练习名称等,但当我这样做时,没有任何结果。有人能指出我哪里出错了吗?

首先,您的项目资源似乎应该是
Workout.WorkoutExercises
,这样每一行都是
WorkoutExercise
的一个实例,因为接下来您只能在DTO模型中选择所需的属性……嗨,Jason,我尝试将我的ListViews ItemSource更改为“{Binding SelectedClientWorkout.Workout.WorkoutExercises}”和绑定到“{Binding Exercise.ExerciseName}”的标签文本,但这导致数据消失。SelectedClientWorkout是在视图模型
SelectedClientWorkout=WorkoutExercises(对象练习列表)->exercisesetexercise(对象练习集列表)中创建的对象
这是否正确?如果这是正确的,则您希望在UI中显示SelectedClientWorkout.WorkoutExecuts[0]。ExerciseSetExecuts?或者您希望在UI中显示。再次感谢大家,我已通过创建新的扁平化API和模型来解决此问题。
<ContentView.Content>
<StackLayout Orientation="Vertical">
    <Grid>
        <ListView HasUnevenRows="True" ItemsSource="{Binding SelectedClientWorkout}" x:Name="ClientWorkoutsDetailsListView" CachingStrategy="RecycleElement" ItemTemplate="{StaticResource WorkoutTemplate}"/>
    </Grid>
</StackLayout>
[
{
    "cWorkoutId": "1",
    "workout": {
        "workoutId": "1",
        "workoutName": "Chest",
        "workoutExercises": [
            {
                "weId": "1",
                "wId": "1",
                "eId": "1",
                "exercise": {
                    "eId": "1",
                    "exerciseName": "Bench Press",
                    "exerciseSetExercises": [
                        {
                            "eSetId": "1",
                            "eId": "1",
                            "cwId": "1",
                            "exerciseSet": {
                                "exerciseSetId": "1",
                                "setNumber": 1,
                                "repsCompleted": 15,
                                "weightLifted": 60.0,