¿Cómo puedo cargar el control de usuario basado en WPF en una ventana basada en WPF de forma dinámica (usando código en tiempo de ejecución)?WPF: ¿cómo cargo dinámicamente los controles de usuario?
Respuesta
Recomiendo echar un vistazo a Prism, ya que las interfaces de usuario compuestas son para lo que son. Sin embargo, dado que esto requeriría la refacturación de toda su aplicación, también responderé su pregunta directamente.
Si desea un solo control de usuario en un contenedor, coloque un ContentControl en su XAML y luego configure la propiedad Content. Si está utilizando un modelo de vista, se podría enlazar contenido a una propiedad FrameworkElement en el modelo de vista:
contentControlInstance.Content = new CustomUserControl();
Si desea que varios controles en una lista, utilice un ItemsControl y asignar una ObservableCollection <> a la propiedad ItemsSource . Si está utilizando un modelo de vista, puede vincular ItemsSource a una propiedad ObservableCollection en el Modelo de visualización.
A continuación, puede simplemente añadir/eliminar vistas desde que ObservableCollection:
private ObservableCollection<FrameworkElement> views =
new ObservableCollection<FrameworkElement>();
private void Initialize()
{
itemsControl.ItemsSource = views;
}
private void AddView(FrameworkElement frameworkElement)
{
views.Add(frameworkElement);
}
Para agregar varios controles que necesita contenedor.
Suponga que tiene un contenedor "MyStack" StackPanel
<Window ..>
<StackPanel Name="MyStack" />
</Window>
Puede crear dinámicamente el control y añadirlo al contenedor. Vea el código a continuación
void AddButtons()
{
Button B1=new Button(),B2=new Button(), B3=new Button();
B1.Content="Hello";
B2.Content="First";
B3.content="Application";
// Now you can set more properties like height, width, margin etc...
MyStack.Children.Add(B1);
MyStack.Children.Add(B2);
MyStack.Children.Add(B2);
}
O use encuadernación. Aquí hay un ejemplo muy crudo que muestra cómo diferentes controles WPF se pueden mostrar en una sola ventana de WPF utilizando ContentControl y enlace (que es lo que hace un kit de herramientas como Prism o Caliburn Micro).
XAML:
<UserControl x:Class="ViewA">
...
<UserControl/>
<UserControl x:Class="ViewB">
...
<UserControl/>
Código:
void ShowViewModelDialog (object viewModel)
{
var host = new MyViewHost();
FrameworkElement control = null;
string viewModelName = viewModel.GetType().Name;
switch (viewModelName)
{
case ("ViewModelA"):
control = new ViewA();
break;
case ("ViewModelB"):
control = new ViewB();
break;
default:
control = new TextBlock {Text = String.Format ("No view for {0}", viewModelName);
break;
}
if (control!=null) control.DataContext = viewModel;
host.DataContext = control;
host.Show(); // Host window will show either ViewA, ViewB, or TextBlock.
}
- 1. Agregar controles dinámicamente a controles de usuario
- 2. Desecho Controles de usuario WPF
- 3. Cómo utilizar los controles de usuario en WPF MVVM
- 4. Agregar controles dinámicamente en WPF MVVM
- 5. Limpieza adecuada de los controles de usuario de WPF
- 6. WPF Lista de los diferentes tipos de controles de usuario
- 7. Extendiendo controles de usuario en WPF
- 8. WPF: Cómo agregar controles dinámicamente en la ventana WPF creada dinámicamente
- 9. Controles de usuario WPF frente a controles personalizados
- 10. ¿Cómo cargo dinámicamente Google Analytics JavaScript?
- 11. ¿Cómo cargo un archivo javascript dinámicamente?
- 12. ¿WPF tiene controles equivalentes para todos los controles de Winforms?
- 13. ¿Puedo crear dinámicamente controles de usuario usando constructores?
- 14. Adición de cuadrícula y controles dinámicamente en WPF
- 15. WPF - ¿Agregar controles dinámicos a Tabitem agregado dinámicamente?
- 16. Cómo orientar todos los controles (Estilos WPF)
- 17. ¿Cómo preparo los controles en un TabItem en WPF?
- 18. Cómo sincronizar animaciones entre controles de usuario en WPF
- 19. ¿Cómo puedo eliminar dinámicamente todos los controles en un control de usuario?
- 20. controles no aparecen en el control de usuario creada dinámicamente
- 21. ASP.NET MVP - Utilizando los controles de usuario
- 22. Acceso al valor de los controles creados dinámicamente C# asp.net
- 23. Lista de controles de usuario en WPF ItemsControl
- 24. Controles de ajuste de WPF
- 25. ¿Cómo habilitar al usuario para arrastrar/soltar los controles de usuario de WPF en cualquier lugar de la página?
- 26. Controles añadidos dinámicamente en Asp.Net
- 27. ¿Caliburn.Micro funciona muy bien con los controles de usuario?
- 28. ¿Cómo puedo inyectar dependencias a los controles del usuario en WPF
- 29. Controles compuestos de WPF
- 30. ¿Cómo aplicar estilo en los controles de WPF?