Also ich habe jetzt das ganze mit UserControls umgesetzt.
In meiner MainWindow.xaml für jede Unterseite:
<DataTemplate DataType="{x:Type local2:StartPageViewModel}">
<local1:StartPage/>
</DataTemplate>
der Bereich ContentControl:
<ContentControl x:Name="Pages" DockPanel.Dock="Right" Content="{Binding SelectedViewModel}"/>
MainWindowsViewModel.cs hinzugefügt:
private object selectedViewModel;
public object SelectedViewModel
{
get { return selectedViewModel; }
set { selectedViewModel = value; OnPropertyChanged("SelectedViewModel"); }
}
mit
SelectedViewModel = new StartPageViewModel();
kann ich jetzt den Contentbereich steuern.
Für den ContentBereich habe ich jetzt für jede Unterseite eine xaml und cs Datei und ein ViewModel.
z.B.:
- StartPage.xaml
- StartPage.xaml.cs
- StartPageViewModel.cs
StartPage.xaml
<StackPanel>
<Label Content="Test Seite" />
<Button Content="Andere Seite" Command="{Binding CommandAnotherPage}"/>
</StackPanel>
StartPage.xaml.cs
public partial class StartPage : UserControl
{
public StartPage()
{
InitializeComponent();
}
}
StartPageViewModel.cs
public ICommand CommandSaveAdminPw { get; set; }
public StartPageViewModel()
{
CommandAnotherPage= new RelayCommand(parameter => anotherPage());
}
private void anotherPage()
{
}
Wie bekomme ich es jetzt hin, den Contentbereich aus dem StartPageViewModel heraus zu wechseln?
Wie bekomme ich von meinem StartPageViewModel heraus Zugriff auf zum Beispiel auf die LoginId (siehe Code Startbeitrag) in dem MainWindowsViewModel?
EDIT
Ok, das mit den Daten übergeben kann ich ja einfach mit
SelectedViewModel = new StartPageViewModel(LoginId);
machen oder?
Den Content durch einen Button im Content ändern, habe ich jetzt mit folgendem Bindig gelöst:
<Button Content="Home" Command="{Binding Path=DataContext.CommandStartView, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>
Jetzt versuche ich es noch hinzubekommen, dieses aus dem Programmcode herraus hin zu bekommen.