Compartir a través de


Cómo: Controlar archivos XAML grandes

Actualización: noviembre 2007

XAML tiene la capacidad de representar estructuras de datos complejas. Como resultado, algunos archivos XAML pueden llegar a ser muy grandes. Por ejemplo, una representación XAML de una imagen vectorial puede llegar a alcanzar un tamaño de varios megabytes. Los archivos XAML grandes pueden producir problemas de rendimiento en Windows Presentation Foundation (WPF) Designer for Visual Studio. Los procedimientos siguientes pueden ayudarle a administrar los problemas de rendimiento producidos por bloques grandes de XAML. 

Sólo vista XAML

La mejor forma de mejorar el rendimiento cuando se trabaja con archivos XAML grandes en Visual Studio es no utilizar la vista Diseño en WPF Designer. Existen dos métodos que se pueden utilizar para editar XAML en Visual Studio sin utilizar la vista Diseño.

El primero es desactivar la vista Diseño y usar sólo la vista XAML. Puede especificar que los archivos XAML se abran únicamente en la vista XAML completa cambiando una opción del Editor de texto. Utilizando este método, dispondrá de compatibilidad de edición de XAML completa, y verá la ventana Esquema del documento y el explorador de etiquetas.

El segundo es utilizar el editor de código fuente. Puede abrir los archivos XAML en el editor de código fuente utilizando el cuadro de diálogo Abrir con. Este es el método más sencillo y proporciona el máximo rendimiento para los archivos XAML grandes. Dispondrá de compatibilidad de edición de XAML completa, pero no verá la ventana Esquema del documento ni el explorador de etiquetas.

Para abrir archivos XAML en la vista XAML completa

Para abrir archivos XAML en el editor de código fuente.

  1. En el Explorador de soluciones, haga clic con el botón secundario en el archivo XAML que vaya a abrir.

  2. En el menú de acceso directo, seleccione Abrir con.

  3. En el cuadro de diálogo Abrir con, seleccione Código fuente (texto) - Editor y haga clic en Aceptar.

    El archivo XAML se abrirá en el editor de código.

Vista Diseño

Puede utilizar la vista Diseño para trabajar con bloques grandes de XAML, pero puede experimentar problemas de rendimiento. Las siguientes sugerencias pueden ayudarle a mejorar el rendimiento.

Para mejorar rendimiento de la vista Diseño con bloques grandes de XAML

  • Mueva el bloque grande de XAML a un UserControl independiente. Si lo hace, podrá agregar el archivo XAML grande a la superficie de diseño y producir un impacto mínimo en el rendimiento.

  • Mueva el bloque grande de XAML a un archivo XAML de recursos. Si este archivo de recursos está asociado a un control personalizado, el archivo XAML grande sólo se cargará cuando el diseñador abra el control personalizado.

  • Vuelva a estructurar el XAML para minimizar las actualizaciones que incluyan el bloque grande de XAML.

    En el ejemplo de código siguiente se muestra un elemento Canvas que contiene un bloque grande de XAML que describe una imagen. Un cambio en uno de sus controles de botón relacionados hace que se actualice la cuadrícula primaria y todos sus elementos secundarios. Si actualiza el elemento Canvas con un bloque grande de XAML, el rendimiento puede disminuir.

    <Window x:Class="WpfApplication1.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid>
            <Canvas>
                <!-- Many paths describing an image. -->
            </Canvas>
            <Button />
            <Button />
            <Button />
        </Grid>
    </Window>
    

    En el código siguiente se muestra cómo reestructurar el XAML anterior para evitar problemas de rendimiento.

    <Window x:Class="WpfApplication2.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid>
            <Canvas>
                <!-- Many paths describing an image. -->
            </Canvas>
    
            <Grid>
                <Button />
                <Button />
                <Button />
            </Grid>
        </Grid>
    </Window>
    

    Los controles de botón ya no estarán relacionados con el elemento Canvas y los cambios en uno de los botones no obligan a actualizar el elemento Canvas.

Vea también

Conceptos

Solucionar problemas de errores de carga de WPF Designer

Referencia

Formato, XAML, Editor de texto, Opciones (Cuadro de diálogo)

Otros recursos

XAML y código en WPF Designer

Depurar e interpretar errores en WPF Designer