Привет, у меня возникла проблема с инъекцией зависимостей в приложении WPF. Вот мой код: App.xaml.cs:WPF Зависимость впрыска
IUnityContainer container = new UnityContainer();
container.RegisterType<ICarViewModel, CarViewModel>();
container.RegisterType<MainWindow>();
MainWindow mainWindow = container.Resolve<MainWindow>();
mainWindow.Show();
CarViewModel.cs:
public ObservableCollection<Car> Cars{ get; } = new ObservableCollection<Car>()
{
new Car() {Name = "Audi"},
new Car() {Name = "Peugeot"},
new Car() {Name = "Renault"},
};
CarView.cs:
public partial class CarView : UserControl, ICarView
{
public CarView()
{
InitializeComponent();
}
public CarView(CarViewModel carViewModel) : this()
{
DataContext = carViewModel;
}
}
CarView.xaml:
<ItemsControl ItemsSource = "{Binding Path = Cars}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation = "Horizontal">
<TextBlock Text = "{Binding Path = Name, Mode = OneWay}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
MainWindow.xaml:
<view:CarView x:Name = "CarViewControl"></view:CarView>
Unity контейнер по-прежнему вызывает только конструктор без параметров из CarView. Спасибо за советы
Вынуть конструктор без параметров? Вероятно, это просто не подходит для использования этого. – Clint
Что? Пожалуйста, покажите мне, как это сделать? – bluray
Вы просто удаляете конструктор, который не принимает никаких параметров, и сохраняйте тот, который делает. Обязательно переместите вызов на InitializeComponent() 'на конструктор, который принимает параметры и удаляет вызов': this() ', и вы должны быть в порядке. – Clint