我正在开发一个小型锻炼应用程序,并且遇到了在另一个视图中显示视图的问题。
我有WorkoutSummaryView
支持WorkoutSummaryViewModel
。在锻炼摘要视图中,我想显示SingleExerciseView
项目列表。每个SingleExerciseView
都有一个支持SingleExerciseViewModel
,它显示名称和练习以及一个ObservableCollection<Set>
即一组带有权重/代表对的练习。
简化代码:
public class ExerciseSummaryViewModel : ViewModelBase
{
public ExerciseSummaryViewModel()
{
_workout = DB.GetWorkout();
foreach (Exercise ex in _workout.Exercises)
ExerciseVMs.Add(new SingleExerciseViewModel(ex));
}
public ObservableCollection<SingleExerciseViewModel> ExerciseVms { get; private set; }
}
//Code for singleExerciseVM
public class SingleExerciseViewModel : ViewModelBase
{
public SingleExerciseViewModel(Exercise exercise)
{
Name = exercise.Name;
Sets = exercise.Sets;
}
public string Name { get; set; }
public ObservableCollection<Set> Sets { get; set; }
}
我的问题是我不知道如何从这里开始让我的SingleExerciseViewModels显示。我尝试将xaml中的SingleExerciseView的dataContext设置为我的SEVM,但这仍然无法正常工作。
//XAML for ExerciseSummaryView
<ListBox Height="496" Width="412" ItemsSource="{Binding ExerciseVms}">
<ListBox.ItemTemplate>
<DataTemplate>
<local:SingleExerciseView />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:0)
您的问题是您将SingleExerciseViewModels聚合到一个集合中 - 但它们没有附加到他们的视图中!那不行。
每个SingleExerciseViewModel都需要附加到SingleExerciseView。然后,这些视图中的每一个都需要绑定到将显示它们的ExerciseSummaryView上的控件(例如,ListView,因为它可以显示自定义用户控件)。