У меня есть код для управления пользователями в WPF (см. Ниже). Я использую nInject как IocContainer. Я инициализирую ioc в событии OnStartup в своем классе App.Конструктор инжекции и без параметров в WPF
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var iocContainer = IocContainer.Get();
iocContainer.Bind<CreateRemindPopup>().To<CreateRemindPopup>();
iocContainer.Bind<MainWindow>().To<MainWindow>();
Current.MainWindow = iocContainer.Get<MainWindow>();
Current.MainWindow.Show();
}
Если я удаляю конструктор без параметров, я получаю исключение NullReferenceException, когда должно отображаться управление. Когда присутствует конструктор без параметров, код для отображаемого содержимого не выполняется.
Мой вопрос в том, как заставить WPF выполнять конструктор с параметром? Я не хочу удалять конструктор без параметров, потому что я потерял конструктора в VisualStudio.
public partial class RemindersListing : UserControl
{
private readonly IReminderReadLogic _reminderReadLogic;
public ObservableCollection<Reminder> Reminders { get; set; }
public RemindersListing()
{
}
public RemindersListing(IReminderReadLogic reminderReadLogic)
{
_reminderReadLogic = reminderReadLogic;
InitializeComponent();
var list = _reminderReadLogic.Get();
Reminders = new ObservableCollection<Reminder>(list);
}
}
Чтобы заставить его использовать в своем коде, вы должны передать параметр вместо вызова 'new RemaindersListing();' (который является параметром-less). Вы пытались использовать это? –
Привет, объект создания является внутренним элементом WPF. Я объявил управление кодом xaml, поэтому у меня нет возможности прямого вызова конструктора (по крайней мере, не того, что я знаю) – Jacek
@GrantWinney Я обновил свой пост – Jacek