Использование UserControl с DependencyInjection

Всем добрый день! Появилась следующая проблема, необходимо создать MenuControl, состоящий из XAML-разметки (стандартной)

<UserControl x:Class="ControlsLibrary.Views.MenuControl"
             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:vm="clr-namespace:ControlsLibrary.ViewModels"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">

    <UserControl.DataContext>
        <vm:MenuControlViewModel/>
    </UserControl.DataContext>

    <Grid/>

</UserControl>

, MenuControl.cs (стандартный)

    public partial class MenuControl : UserControl
    {
        public MenuControl()
        {
            InitializeComponent();
        }
    }

и MenuControlViewModel.cs (пустой класс)

    public class MenuControlViewModel
    {
        public MenuControlViewModel(IMediator m)
        {}
    }

, при этом MenuControlViewModel должен быть задан как DataContext. Так же MenuControlViewModel должен иметь конструктор, принимающий экземпляр интерфейса IMediator в качестве параметра. Передачу в конструктор параметра сделал с помощью DependencyInjection:

private readonly IHost _host;

        public Register()
        {
            _host = Host.CreateDefaultBuilder()
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddSingleton<MainWindow>();
                    services.AddSingleton<IMediator, Mediator>();
                }).Build();
        }

        public void OnStartup(object sender, StartupEventArgs e)
        {
            using var serviceScope = _host.Services.CreateScope();
            var window = serviceScope.ServiceProvider.GetService<MainWindow>();
            window.Show();
        }

Во всём остальном коде DI работает. Но есть проблема: т.к. MenuControlViewModel должен быть DataContext, то нужно его где-то задать. Если задавать в XAML – будет ошибка, т.к. нельзя передать ничего в качестве параметра. Если задавать в MenuControl.cs, то нужно передать параметры в MenuControl.cs, Но будет ошибка – UserControl запускается только со стандартным конструктором, без параметров.


Ответы (0 шт):