Ich versuche eine Cross-Plattform-App zu erstellen, die für Xamarin.Forms und WPF (wie diese: https://github.com/C0D3Name/XamFormsWpf) in Kombination mit MVVM-Licht funktioniert.MVVM Light für Xamarin Forms und WPF
MVVM Light ist ziemlich neu für mich und ich habe kein klares Tutorial für das, was ich machen möchte, gefunden. Auf Xamarin.Forms erfolgt die DependencyInjection von
SQLiteConnection database = DependencyService.Get<ISQLite>().GetConnection("db.sqlite");
Wie wird dies in MVVM Licht getan? Muss ich die verschiedenen Plattform-Implementierungen von ISQLite
als Parameter übergeben?
Ich habe bereits die ViewModelLocator
in meinem PCL:
public class ViewModelLocator
{
/// <summary>
/// Register all the used ViewModels, Services et. al. witht the IoC Container
/// </summary>
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<MainViewModel>();
// My DataService is using the connection from ISQlite
SimpleIoc.Default.Register<IDataService, DataService>();
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
}
public interface ISQLite
{
SQLiteConnection GetConnection(string sqliteFilename);
}
Soweit ich die SimpleIoc
verstanden, ich habe die Schnittstelle zu einer konkreten Implementierung zu registrieren, aber wie meine Data über die richtige ISQLite
Implementierung wissen ?
Ich hoffe meine Frage ist verständlich.