ナビゲーションの簡単で汚い例 (これはここに書かれており、VS ではないため、スペルが間違っている場合は修正を適用してください):
ビューの階層的な説明を作成しましょう:
public abstract Class ViewModelBase : INotifyPropertyChanged{}
public abstract Class ViewModelNavigationBase : ViewModelBase {}
public Class ViewModel1 : ViewModelNavigationBase {}
public Class ViewModel2 : ViewModelNavigationBase {}
public Class ViewModel3 : ViewModelNavigationBase {}
public Class MainViewModel : ViewModelBase
{
private ViewModelNavigationBase currentViewModel;
public ViewModelNavigationBase CurrentViewModel
{
get{return currentViewModel;}
set
{
currentViewModel = value;
OnPropertyChanged("CurrentViewModel");
}
}
private const int numberOfPages = 3 ;
private int index;
private ViewModelNavigationBase[numberOfPages] pages;
....
... OnNavigateCommand()
{
index++;
index = index % numberOfPages;
CurrentViewModel = pages[index];
}
}
資力 :
<local:MainViewModel x:Key="MainVm" />
<DataTemplate TargetType={x:Type local:ViewModel1}>
<local:View1 />
</DataTemplate>
<DataTemplate TargetType={x:Type local:ViewModel2}>
<local:View2 />
</DataTemplate>
<DataTemplate TargetType={x:Type local:ViewModel3}>
<local:View3 />
</DataTemplate>
xaml:
<Window x:Name="MainWindow"
DataContext={StaticResource MainVm}>
<StackPanel>
<ContentControl Content={Binding CurrentViewModel} />
<Button Content="Navigate" Command="{Binding NavigateCommand}"/>
</StackPanel>
</Window>