Чистый DI с MVVM + WPFC#

Место общения программистов C#
Anonymous
Чистый DI с MVVM + WPF

Сообщение Anonymous »

Очень сложно использовать чистый DI (т. е. без фреймворка) с WPF после MVVM. У меня есть книга Марка Зееманна; однако его решение этой проблемы очень похоже на то, что придумал я:

Код: Выделить всё

public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);

string connectionString = @"Server=(localdb)\MSSQLLocalDB;Database=RouteMiningDB;Trusted_Connection=True;";
RouteMiningDAL.RouteMiningDataContext db = new RouteMiningDAL.RouteMiningDataContext(new DbContextOptionsBuilder().UseSqlServer(connectionString).Options);
IZIPCodeInfoRepository zipCodeRepo = new RouteMiningDAL.SQLZIPCodeInfoRepository(db);
ZIPCodeInfoService zipCodeInfoService = new ZIPCodeInfoService(zipCodeRepo);

ZIPCodeInfoViewModel zipCodeInfoViewModel = new ZIPCodeInfoViewModel(zipCodeInfoService);
ZIPCodeInfoView zipCodeInfoView = new ZIPCodeInfoView(zipCodeInfoViewModel);

MainWindow mainWindow = new MainWindow();
mainWindow.Content = zipCodeInfoView;
mainWindow.Show();
}
}
На других ресурсах, а также в книге Марка, OnStartup используется в качестве корня композиции. Кажется, все вышеперечисленного, однако я чувствую себя очень ограниченным в том, что могу сделать. Например, я установил для ZIPCodeInfoView значение mainWindow.Content. Очевидно, что со многими дочерними Windows, такими как:
Изображение
< /p>
Это создает некоторые проблемы с макетом, потому что я не могу просто установить его на xxxx.Content (я могу догадаться, но я не хочу создавать макет в код). Как мне это сделать? Я упускаю из виду возможность сделать это в XAML? Кажется, что XAML нужен конструктор без параметров, который явно не работает для внедрения конструктора DI. Спасибо!
Отказ от ответственности: я хочу использовать чистый DI.

Подробнее здесь: https://stackoverflow.com/questions/495 ... w-mvvm-wpf

Вернуться в «C#»