Tengo un control definido en xaml con un número bastante grande de conjunto de propiedades que es difícil de reproducir en el código subyacente. ¿Puedo definir el control en xaml y de alguna manera crear instancias de él en el código?WPF Crear instancias de controles definidos en xaml
Respuesta
Otra opción es crear el control como un recurso con el x: Compartido = "false" propiedad si desea obtener nuevas instancias de cada propuesta:
<UserControl.Resources>
<Rectangle x:Key="MyControl" x:Shared="False"
...
/>
</UserControl.Resources>
En código:
var myNewCtrl = this.FindResource("MyControl") as Rectangle;
// use control
Ooh, +1! Nunca recuerdo 'x: Shared' :-) –
Beautiful. Gracias – Aks
¿Ha considerado crear el control como UserControl?
No es una mala idea, pero podría ser exagerado si solo quiere configurar propiedades específicas en un 'TextBox'. –
Sí se puede al usar XamlReader: http://msdn.microsoft.com/en-us/library/system.windows.markup.xamlreader.aspx. Use el método estático Cargue pasando una secuencia que contenga su marcado xaml. Obtiene un objeto que es su instancia de control.
Puede establecer cualquier cantidad de propiedades con un Estilo Xaml y volver a aplicar ese estilo, ya sea directamente a una instancia separada del control o como base para un estilo diferente. Este último le permitiría especificar sus propiedades comunes, pero aún así, por ejemplo, tienen diferentes configuraciones visuales para cada control.
Así, en lugar de tratar de reproducir esta:
<TextBlock Width="100" Height="40" FontSize="10" ClipToBounds="True" />
... definir esto en un archivo de recursos compartidos:
<Style TargetType="TextBlock" x:Key="myStyle">
<Setter Property="Width" Value="100" />
<Setter Property="Height" Value="40" />
<Setter Property="FontSize" Value="10" />
<Setter Property="ClipToBounds" Value="True" />
</Style>
... y luego utilizar esta en el marcado:
<TextBlock Style="{StaticResource myStyle}" />
El mismo principio se aplica a cualquier control y conjunto de propiedades.
El estilo es una muy buena solución. También puede crear estilos para dirigirse a controles personalizados/de usuario. Solo puede establecer DependencyProperties en estilos. –
- 1. Controles compuestos de WPF
- 2. Extendiendo controles de usuario en WPF
- 3. ¿Controles WPF de tamaño variable?
- 4. WPF Galería de estilos XAML
- 5. Crear atajos de tecla Alt en WPF/XAML
- 6. ¿Cómo puedo crear controles WPF en un hilo de fondo?
- 7. Controles WPF en WinForms
- 8. Agregar espacios entre controles WPF
- 9. WPF: Xaml, crear una colección observable <object> en XAML en .NET 4.0
- 10. wpf xaml error de diseño
- 11. WPF Imágenes contra XAML
- 12. Plantilla de control para controles existentes en WPF
- 13. Condicional XAML (WPF)
- 14. Grupos WPF RadioButton en Xaml
- 15. Desactivar estilo en WPF XAML?
- 16. Decodificador WPF con controles dentro
- 17. Controles de ajuste de WPF
- 18. XAML sin WPF - Animaciones
- 19. Controles XNA y GUI (p. Ej., Xaml y xna)
- 20. Controles de usuario WPF frente a controles personalizados
- 21. WPF Tooltip con controles
- 22. ¿Cómo crear contenido tabtable en WPF/C#?
- 23. ¿Funciona la característica StringFormat de WPF Xaml en Label.Content?
- 24. StringFormat en XAML, WPF: formato de moneda
- 25. Uso de colores CMYK en WPF/XAML
- 26. WPF Girar animación de rectángulo en XAML
- 27. ¿Crear un diccionario en xaml?
- 28. Desecho Controles de usuario WPF
- 29. Nombrar controles de usuario sin constructores predeterminados en XAML
- 30. Usando MEF en los controles instanciados de XAML
Los controles no se pueden definir solo en XAML, aún tendrá un código detrás, aunque en algunos casos el código detrás solo puede contener la línea 'InitializeComponent()'. – Snowbear
Entiendo eso. Pero digo, por ejemplo, tengo un cuadro de texto definido en xaml. ¿Puedo crear instancias del mismo cuadro de texto con las mismas propiedades en el código? – Aks
¿Necesita crearlo en código, o simplemente necesita poder replicar esos valores de propiedad fácilmente? Consulte mi respuesta para obtener un ejemplo simple de cómo hacer esto último ... –