silverlight MVVM Представление в представлении - PullRequest
1 голос
/ 02 января 2011

Я работаю над небольшим приложением для тренировки и сталкиваюсь с проблемой отображения представления в другом представлении.

У меня есть 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>

1 Ответ

0 голосов
/ 14 января 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...