silverlight MVVM视图中的视图

时间:2011-01-02 00:31:29

标签: mvvm

我正在开发一个小型锻炼应用程序,并且遇到了在另一个视图中显示视图的问题。

我有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>

1 个答案:

答案 0 :(得分:0)

您的问题是您将SingleExerciseViewModels聚合到一个集合中 - 但它们没有附加到他们的视图中!那不行。

每个SingleExerciseViewModel都需要附加到SingleExerciseView。然后,这些视图中的每一个都需要绑定到将显示它们的ExerciseSummaryView上的控件(例如,ListView,因为它可以显示自定义用户控件)。