2009-06-04 9 views
10

Recientemente descubrí que podía hacer uso de los controles de usuario para reducir el tamaño del archivo .xaml de mi aplicación principal. Soy nuevo en WPF y me di cuenta de que el XAML de mi aplicación es muy largo, muy rápido y es engorroso para desplazarse.¿Cuál es la forma más fácil de descomponer archivos XAML grandes en mi aplicación?

¿Los controles de usuario son la mejor manera de solucionar este problema (es decir, tienen muchos controles de usuario y sus plantillas en una biblioteca de control separada)?

¿Cómo gestionas tu XAML?

¡Gracias de antemano!

Respuesta

9

Tiene razón en que dividir las cosas en controles separados puede ayudar a reducir el tamaño de los archivos xaml individuales. La otra forma de reducir el tamaño de los archivos es hacer uso de ResourceDictionaries. Cuando divide sus Estilos, Plantillas y Recursos en RecursoDiccionarios separados, puede reducir en gran medida el tamaño de los archivos xaml de su ventana y control. Una vez que las cosas se dividen, puede hacer uso de la función MergedDictionaries para acceder a los estilos y plantillas desde donde los necesite. Si se utiliza un recurso específico a través de múltiples ventanas y controles, también puede combinar ResourceDictionary en los recursos de App.xaml, lo que le permite usarlo desde cualquier ubicación de la solución.

Personalmente, me gusta mantener cada archivo XAML alrededor de ~ 300 líneas o menos, después de ese punto veo si hay una mejor manera en que debería tenerlo organizado. Here contiene información adicional y consejos sobre cómo mantener organizados sus recursos.

+0

Examinaré el uso de ResourceDictionaries. Sabía que tenía que haber alguna forma de organización que estuviera pasando por alto. Muchas gracias por tu ayuda. – stevosaurus

+0

El enlace de información adicional está muerto, pero [aquí] (http://web.archive.org/web/20100629015119/http://groups.google.com.au/group/wpf-disciples/web/wpf-and- xaml-coding-guidelines) está en WayBackMachine. –

1

También para temas/estilos evite poner estilos en el control/nivel individual, más bien haga que el theme.xaml maneje el skinning directamente, de esa manera no tendrá la hinchazón de información de estilo dentro del Xaml.

es decir <MyControl Style="{StaticResource myControlStyle}"/> podrían evitarse mediante la aplicación directa en el estilo MyControl en el archivo de tema, de esa manera es suficiente <MyControl/> en el Window.xaml

+0

Así es como lo estoy haciendo actualmente con mis controles de usuario. ¡Gracias un montón! – stevosaurus

1

controles de usuario son una muy buena manera de aislar el código de la ventana principal. Además de decluttering, también ofrecen otras ventajas, como modularizar el código y proporcionar una interfaz limitada en esa sección de código, lo que ayuda a mejorar el mantenimiento y ayuda a prevenir el código de spaghetti.

Además de eso, DataTemplates también puede ser útil. Por ejemplo, supongamos que tiene muchos campos en los que se debe ingresar y todos esos campos tienen etiquetas. En ese caso, puede crear una clase con dos propiedades, una para la etiqueta y otra para el valor de ese campo. A continuación, puede crear un DataTemplate para esa clase que vincula la etiqueta a un TextBlock y el valor a un TextBox. Si desea alinear todas las etiquetas, puede crear un Grid SharedSizeScope. Después de hacer eso, puede crear una Colección Observable de esa clase, llenar la colección con etiquetas y valores, y luego establecer el ItemsSource de un ItemsControl en ella. Después de obtener la plomería inicial de esto, los formularios de entrada de datos se pueden generar mucho más rápido que en WinForms.

Cuestiones relacionadas