Ich habe hier eine einfache Anwendung, aber ich bin mir nicht sicher, wie mein ViewModel erstellt wird. Ich gehe davon aus, dass es aus der Einheit Container ist, aber ich bin unsicher und neugierig. Das Modul initialisiert und registriert die Ansicht mit der Region. Der Code der Sicht hinter der Sicht hat das ViewModel in seinem Konstruktor initialisiert und das ViewModel ruft einige Dienste auf, die zuvor registriert wurden.Wie wird dieses ViewModel erstellt?
Meine Frage ist, wie ist das ViewModel im Code der Ansicht erstellt, wenn ich nie den ViewModel-Typ mit dem Einheits-Container registriert habe? Tritt in der Methode "RegisterViewWithRegion" etwas Magisches auf?
AlarmsModule.cs: Dieses Register einfach die Ansicht mit der Region
[Module(ModuleName = "AlarmsModule")]
public class AlarmsModule : IModule
{
[Dependency]
public IRegionManager regionManager { get; set; }
public void Initialize()
{
regionManager.RegisterViewWithRegion("AlarmsRegion", typeof(AlarmPanel.View));
}
}
View.xaml.cs:
public partial class View : UserControl
{
public View(ViewModel vm)
{
InitializeComponent();
DataContext = vm;
}
}
ViewModel.cs
public class ViewModel: DependencyObject
{
IEventAggregator _eventAggregator;
public ObservableCollection<IAlarmContainer> AlarmList { get; set; }
IAlarmService _alarmService;
public ViewModel(IAlarmService alarmService)
{
//Adding an alarm from the alarm service, which is injected into this viewModel
AlarmList = alarmService.AlarmList;
}
}
Awesome, danke! –