2011-01-02 2 views
1

Я работаю над небольшим приложением для тренировки и сталкиваюсь с проблемой отображения вида в другом представлении.silverlight 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 для отображения. Я попытался настроить dataContext для SingleExerciseView в xaml на мой SEVM, но это все еще не работает.

//XAML for ExerciseSummaryView 
<ListBox Height="496" Width="412" ItemsSource="{Binding ExerciseVms}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <local:SingleExerciseView /> 
     </DataTemplate> 
    </ListBox.ItemTemplate>               
</ListBox> 

ответ

0

Ваша проблема заключается в том, что вы объединяете SingleExerciseViewModels в коллекцию, но они не привязаны к их представлениям! Это не сработает.

Каждый SingleExerciseViewModel должен быть привязан к SingleExerciseView. Затем каждый из этих представлений должен быть привязан к элементу ExerciseSummaryView, который будет отображать их (например, ListView, поскольку он может отображать пользовательские элементы управления).

Смежные вопросы