El uso de DI en MainView no es un problema: Agregué mis ventanas a mi contenedor y en el arranque le muestro las ventanas que se sacaron de mi contenedor. Pero si tengo un usercontrol agregado a mi vista principal como etiqueta xaml, wpf view engine creará automáticamente una nueva instancia para él sin sacar el UserControl que agregué en mi contenedor también. ¿Cómo puedo forzar que el motor de vista de WPF busque el componente? requerido por view/xamal en mi contenedor en lugar de crear uno nuevo?Inyección de Dependecy (Windsor) en WPF UserControl
Respuesta
No hay forma de hacerlo sin modificar su XAML. Puede pensar en algunas soluciones, por ejemplo, crear un control heredado de ContentControl
que inyectará dependencias en su Content
, pero no recomendaría este enfoque, solo si no tiene otra opción.
Lo que recomendaría es utilizar el mejor patrón de WPF - MVVM. La idea es tener una jerarquía de ViewModels, todos ellos se crearán utilizando el contenedor IoC con la inyección de constructor adecuada. También tendrá una jerarquía de vistas, cada vista dependerá solo del viewModel correspondiente que se pasará a la vista DataContext
. Este enfoque le permitirá usar DI en la aplicación WPF muy bien.
creo que entendí lo que me sugeriste
<Window x:Class="DDDSample02.Wpf.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:presentation="clr-namespace:DDDSample02.Wpf.Views"
Title="MainWindow" Height="384" Width="821">
<Grid>
<presentation:ProductsView DataContext="{Binding Path=ProductsPresenter}" />
</Grid>
</Window>
donde MainWindow se saca del recipiente en el arranque
protected override void OnStartup(StartupEventArgs e)
{
GuyWire.Wire();
((Window)GuyWire.GetRoot()).Show();//MainWindow
}
y MainWindow parece
public partial class MainWindow : Window
{
public MainWindow(DDDSample02.ViewModel.MainWindowPresenter presenter)
{
InitializeComponent();
this.DataContext = presenter;
}
}
public class MainWindowPresenter
{
public MainWindowPresenter(ProductsPresenter productPresenter)
{
this.ProductsPresenter = productPresenter;
}
public ProductsPresenter ProductsPresenter { get; private set; }
}
Sí, eso es todo. – Snowbear
- 1. Alternativas de inyección de constructor (Castle Windsor)
- 2. wpf - Herencia de UserControl
- 3. Wpf UserControl y MVVM
- 4. Wpf usercontrol con constructor con parámetros
- 5. Inyección de dependencias en WPF usando Ninject
- 6. Heredar de un UserControl en WPF
- 7. Accediendo ResourceDictionary desde WPF UserControl
- 8. Haga clic en evento en UserControl- WPF
- 9. La combinación de pruebas unitarias (burla) y un marco de inyección Dependecy
- 10. ¿Cómo puede un UserControl de WPF heredar un UserControl de WPF?
- 11. Windsor castle Propiedades de inyección del objeto construido
- 12. UserControl utilizando elementos principales en wpf?
- 13. Cuándo debe extraer un UserControl en WPF
- 14. Cómo usar un ContextMenu UserControl en WPF?
- 15. Agregar WPF UserControl a la ventana WPF en el código
- 16. ventana de WPF que aloja usercontrol
- 17. WPF - UserControl atributo de contenido predeterminado
- 18. WPF Obtiene el propietario de UserControl
- 19. Inyección de constructor Ninject en WPF
- 20. ¿Cómo implementar DisplayMemberPath para mi Wpf UserControl?
- 21. Enlace de datos a un UserControl en WPF
- 22. wpf problema al usar propiedades de dependencia en un UserControl
- 23. Castillo de Windsor - ¿Cómo asignar instancia de nombre en la inyección de constructor
- 24. Inyección de base de datos en un atributo de validación con ASP MVC y Castle Windsor
- 25. wpf tooltip no se muestra en usercontrol o sus hijos
- 26. cómo cargar wpf usercontrol en el patrón MVVM
- 27. ¿Permitir la inyección de propiedad opcional (nula) en Castle Windsor a través del método de fábrica?
- 28. Inyección de dependencia con objetos NHibernate
- 29. ¿Cómo creo un estilo dentro de un UserControl de WPF?
- 30. Inyectar dependencia en CustomAttribute usando Castle Windsor
duplicado: http://stackoverflow.com/questions/2408873/how-do-i-inject-dependencies-to-user-controls-in-wpf –