2011-01-02 15 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を表示するために取得するには、ここから行くのかわからないです。私は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

あなたが問題にしているのは、SingleExerciseViewModelsをコレクションに集約していますが、ビューには添付されていません。それはうまくいきません。

各SingleExerciseViewModelをSingleExerciseViewにアタッチする必要があります。次に、これらのビューのそれぞれは、それらを表示するExerciseSummaryViewのコントロールにバインドする必要があります(カスタムユーザーコントロールを表示できるため、ListViewなど)。

関連する問題