Внедрение зависимостей .net core WPF
Я новичок в WPF, я создал простое приложение WPF с кнопкой, которая при нажатии будет извлекать данные из базы данных и выводить результат в текстовое поле.
У меня проблема в Dependency Injection, есть класс AppDBContext для базы данных и logMessageService.cs, который имеет функции для извлечения данных из БД.
private readonly ILogMessageService Service;
public MainWindow(ILogMessageService service)
{
InitializeComponent();
this.Service = service;
}
Мне выдали ошибку "Соответствующий конструктор не найден для типа MainWindow"
Как выполнить внедрение зависимостей в WPF?
1 ответ
Вы захотите использовать MVVM и создать MainWindowViewModel, который вы создадите в конструкторе Public MainWindow(). Затем ViewModel может либо инициализировать саму службу, либо ваш конструктор MainWindow может инициализировать ее и передать как часть конструктора в новую модель представления.
Public MainWindow()
{
InitialiseComponent();
DataContext = new MainWindowViewModel(service);
}
Или
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MyNameSpace">
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
...
</Window>
А также
Public Class MainWindowViewModel
{
...
}