Чистый 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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