Ich habe eine einfache WPF-Anwendung wie folgt:WPF/MVVM eine Ansicht Laden zur Laufzeit dynamisch
Ich habe auch 3 verschiedene Ansichten:
- DetailType1.xaml
- DetailType2 .xaml
- DetailType3.xaml
und jede Ansicht hat seine eigene Ansichtsmodell
ParentView.xaml
...
<!-- Detail Area -->
<GroupBox x:Name="groupDetails" Grid.Column="0" Header="Details"
HorizontalAlignment="Stretch"
Grid.Row="0" VerticalAlignment="Stretch">
<GroupBox.Resources>
<ResourceDictionary>
<DataTemplate DataType="{x:Type vm:DetailType1ViewModel}">
<views:DetailType1View/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:DetailType2ViewModel}">
<views:DetailType2View/>
</DataTemplate>
</ResourceDictionary>
</GroupBox.Resources>
<ContentPresenter DataContext="{Binding}" Content="{Binding Path=BaseTypeViewModel}" />
</GroupBox>
...
ParentViewModel.cs
...
public BaseViewModel BaseTypeViewModel
{
get { return GetValue<BaseViewModel>(); }
set
{
SetValue(value);
}
}
private void ShowDetailDialog()
{
var vm = GetViewModelByID(SelectedID);
BaseTypeViewModel = vm;
}
private BaseViewModel GetViewModelByID(int Id)
{
switch (Id)
{
case 1:
return IoC.Get<DetailType1ViewModel>();
case 2:
return IoC.Get<DetailType2ViewModel>();
}
}
...
DetailType1ViewModel.cs
public class DetailType1ViewModel : BaseViewModel
{
...
}
Meine Frage ist:
Jedes Mal, wenn ich im linken Bereich auf DataGrid-Zeile doppelklicke, möchte ich eine der oben genannten Ansichten in den Detailbereich laden, abhängig von der ausgewählten ID. Also, welche Techniken können verwendet werden? Es wäre schön, wenn Sie mir ein Codebeispiel zeigen könnten.
Vielen Dank an alle für die Hilfe.
Verwenden Sie eine '' und laden Sie Ihre Seiten darin – Alex